Adding Force over network
Hi , I am making a multiplayer game where when you click on enemy player force is added to that player . I have tried using Command and GetComponent but that does not seem to work . Also Clients have some physics lags (sometimes the force is applied and sometimes it is not ).
could you add some information such as parts of the code you have written? Would be useful ^^
I have watched a youtube tutorial where a guy does the sam thing , but he does not apply force , he deducts health from player .
using UnityEngine; using System.Collections; using UnityEngine.Networking;
public class Shoot : NetworkBehaviour {
public Transform camtrans;
private float forceapplier=350f;
private float shootrange=35f;
private Transform trans;
Rigifier rgf;
void Start ()
{
rgf = GetComponent<Rigifier>();
}
void Update ()
{
CheckIfShooting();
}
void CheckIfShooting()
{
if(Input.GetButtonDown("Fire1"))
{
Shooting();
}
}
void Shooting()
{
Ray shootray = new Ray(camtrans.position+ new Vector3(0,0,.5f),camtrans.forward);
Debug.DrawRay(camtrans.position+new Vector3(0,0,.5f),camtrans.forward);
RaycastHit hit ;
if(Physics.Raycast(shootray,out hit,shootrange ))
{
if(hit.collider.tag=="Player")
{
string UIdentity = hit.transform.name;
CmdTellServerWhoWasShot(UIdentity,camtrans.forward);
//hit.collider.gameObject.GetComponent<Rigidbody>().AddForce(transform.forward*forceapplier,Force$$anonymous$$ode.Impulse);
rgf.AddingForce(-camtrans.forward*forceapplier/1.5f);
//rig.AddForce(-camtrans.forward*forceapplier/1.5f,Force$$anonymous$$ode.Impulse );// 3rd Newtons Law
}
else if(hit.collider.tag=="Floor")
{
rgf.AddingForce(-camtrans.forward*forceapplier/2f);
//rig.AddForce(-camtrans.forward*forceapplier/3,Force$$anonymous$$ode.Impulse );// 3rd Newtons Law
}
}
}
[Command]
void CmdTellServerWhoWasShot(string uID , Vector3 trans)
{
GameObject go = GameObject.Find(uID);
}
}
I should mention that this script is activated only on the player himself . When I add go.getcomponent().addForce it doesn't work and reports , null object reference , not set to an instance of an object .
One more thing . As you can see if player shoots at a wall he will be pushed back , it sometimes lags on client for some reason .
Your answer
Follow this Question
Related Questions
[UNET] Network Transform doesnt work for the host. On Client it works seemless. 0 Answers
Rigid body kick over network (DEADLINE) 0 Answers
Networked nonplayer objects only effected by the client hosting the server? 0 Answers
Networked vehicle physics - to rigidbody or not rigidbody? 0 Answers
Player (RigidBody) jitters when colliding with object and jumping. 0 Answers