So, I’m working on a multiplayer fps game using the new UNET system, and I’m having issues doing RPC calls. Here is my C# script attached to the player camera:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class soldierHandling : NetworkBehaviour {
RaycastHit hit;
[ServerCallback]
void Update () {
CheckLookingAt();
if(!isLocalPlayer){
if(Input.GetKeyUp(KeyCode.E)){
RpcPutObjectInHand(hit.transform.gameObject);
}
}
}
[ClientRpc]
public void RpcPutObjectInHand (GameObject objectToPickUp){
Debug.Log("attempting to pick up : " + objectToPickUp);
if(hit.transform.tag == "equipable"){
objectToPickUp.transform.SetParent(this.transform.FindChild("holdPoint"));
objectToPickUp.transform.position = this.transform.FindChild("holdPoint").transform.position;
objectToPickUp.transform.rotation = this.transform.FindChild("holdPoint").transform.rotation;
objectToPickUp.GetComponent<Rigidbody>().detectCollisions=false;
objectToPickUp.GetComponent<Rigidbody>().isKinematic=true;
objectToPickUp.GetComponent<Rigidbody>().useGravity=false;
//objectToPickUp
Debug.Log("picked up : " + objectToPickUp);
}
}
void CheckLookingAt(){
Vector3 fwd = transform.TransformDirection(Vector3.forward);
if(Physics.Raycast(transform.position,fwd,out hit, 5)){
//Debug.Log("looking at: " + hit.transform);
}
}
}
Basically, the script checks what the player is looking at, when E is pressed if the object is equipable, its physics are deactivated, and it’s put in the player’s hand. (Yes, I intend to cache etc. this isn’t the finished product)
It works great on the server without the [ClientRpc] tag but obviously, doesn’t call the function on the clients. With the [ClientRpc] tag, the function never gets called and I get the following warning:
ClientRpc call on un-spawned object
UnityEngine.Networking.NetworkBehaviour:SendRPCInternal(NetworkWriter,
Int32, String)
soldierHandling:CallRpcPutObjectInHand(GameObject)
soldierHandling:Update() (at
Assets/scripts/soldierHandling.cs:15)
I’m confused as the player and weapon are clearly spawned objects. Any help on the issue would be great!