Question by
USERNAME_NOT_FOUND · Oct 16, 2016 at 04:29 AM ·
networkingmultiplayergameshootingmultiplayer-networking
RPC sending Failed
I'm making a multiplayer FPS game and I need to sync movements and player information such as health, weapons and so on. I downloaded "Simple Multiplayer Kit" from Asset Store and I ran into some serious problems.
Script that I'm using is
public class PlayerSync : MonoBehaviour {
Vector3 lastPosition;
Quaternion lastRotation;
Transform myTransform;
NetworkView networkView;
Vector3 targetPosition;
Quaternion targetRotation;
[SerializeField] float posThreshold = 0.1f;
[SerializeField] float rotThreshold = 5f;
void Start ()
{
networkView = GetComponent<NetworkView>();
if(networkView.isMine == true)
{
myTransform = transform;
//Make sure everyone sees the player at right location the moment he spawns
if(!Network.isServer)
{
networkView.RPC("UpdateMovement", RPCMode.OthersBuffered, myTransform.position, myTransform.rotation);
}
}
}
[RPC]
void SetUsername (string name)
{
gameObject.name = name;
}
void Update ()
{
if (networkView.isMine)
{
SendMovement();
}
else
{
ApplyMovement();
}
}
void SendMovement()
{
if (Vector3.Distance(myTransform.position, lastPosition) >= posThreshold)
{
//If player has moved, send move update to other players
//Capture the player's position before the RPC is fired off and use this
//to determine if the player has moved in the if statement above.
lastPosition = transform.position;
networkView.RPC("UpdateMovement", RPCMode.OthersBuffered, myTransform.position, myTransform.rotation);
}
if (Quaternion.Angle(myTransform.rotation, lastRotation) >= rotThreshold)
{
//Capture the player's rotation before the RPC is fired off and use this
//to determine if the player has turned in the if statement above.
lastRotation = transform.rotation;
networkView.RPC("UpdateMovement", RPCMode.OthersBuffered, myTransform.position, myTransform.rotation);
}
}
void ApplyMovement ()
{
transform.position = Vector3.Lerp(transform.position, targetPosition, 0.5f);
transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, 0.5f);
}
[RPC]
void UpdateMovement (Vector3 newPosition, Quaternion newRotation,int health)
{
targetPosition = newPosition;
targetRotation = newRotation;
}
}
The error that I got is this :
Sending RPC 'UpdateMovement' failed because the number of supplied parameters doesn't match the RPC declaration. Expected 3 but got zd parameters.
UnityEngine.NetworkView:RPC(String,RPCMode,Object[])
I have no Idea what 'zd parameters' are and where to fix. Please help me with this problem.
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220612094723im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How to smoothly interpolate game object positions in a network game? 0 Answers
How configure a dedicated server about Unet 0 Answers
Assign Network Manager an Online Scene with Script 0 Answers
localScale in network 0 Answers
Card Game using Network Manager 0 Answers