So the idea was to have this script in two separate builds of Unity and have one set as client and the other set as not a client.
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System;
using System.Net.Sockets;
using System.Text;
using UnityEngine;
public class NetworkHandler : MonoBehaviour
{
public int serverPort = 00000;
public string IPString = "11111";
IPAddress serverIP;
IPEndPoint serverEP;
UdpClient client;
UdpClient server;
public bool isClient = true;
public bool startRecieving = false;
public GameObject hammer;
public ClientController remoteClient;
private void Update()
{
if (Input.GetKeyDown("y"))
{
startRecieving = !startRecieving;
}
if (Input.GetKeyDown("j") && isClient == true)
{
SendData("jump");
}
if (isClient == false && startRecieving == true)
{
RecieveData();
}
}
private void Start()
{
remoteClient = hammer.GetComponent<ClientController>();
serverIP = IPAddress.Parse(IPString);
serverEP = new IPEndPoint(serverIP, serverPort);
}
public void RecieveData()
{
//Decided to use try catch so that way if there is no data being recieved it wont throw an exception
try
{
Byte[] receivedBytes = client.Receive(ref serverEP);
string returnData = Encoding.ASCII.GetString(receivedBytes);
print(returnData);
if (returnData == "jump")
{
remoteClient.Jump(100);
}
}
catch (NullReferenceException)
{
}
catch(ObjectDisposedException)
{
}
finally
{
client.Close();
}
}
public void SendData(string text)
{
client = new UdpClient(serverPort);
client.Connect(serverIP, serverPort);
Byte[] sendBytes = Encoding.ASCII.GetBytes(text);
client.Send(sendBytes, sendBytes.Length);
}
}
When the non client would receive the data it would determine whether to jump or not, but instead nothing happens, unless I disable isClient then it works inside of the same build or inside of the editor, I’m trying to avoid using Unet because of it changing soon, the 0’s and 1’s are where I put the forwarded port and my local ip address. Heres the other script that handles the “jump”
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ClientController : MonoBehaviour
{
public Rigidbody thisBody;
void Awake()
{
if (GetComponent<Rigidbody>() != null)
{
thisBody = this.GetComponent<Rigidbody>();
}
}
public void Jump(int force)
{
thisBody.AddForce(Vector3.up * force);
}
}
I’m just asking for a little guidance because I’ve never tried networking before really, and I’m probably missing something really simple.