- Home /
How can I send a mouse click to a server using an RPC?
So here is the situation. I have a game that will have multiple players which are going to throw objects at one another. This game uses a mouse click to pick up the objects and a mouse click to throw the objects. When I run the game, I start a dedicated server which I believe owns the network views of all of the objects except for the player's avatars. So in each player's game, they can pick up and throw objects, but none of the other players or the server show this happening. That's what I need to solve.
A thought was put forth by a friend that the server does not receive the mouse click so the state of being picked up (isPicking) is never met on the server side. That being said, how can I send an RPC that tells the server that I have clicked the mouse and thus picked up an object? Also, with the limited knowledge, could this be a solution to the server and players not seeing the objects move?
Here is what I am currently trying.
//If the left mouse button is pressed, the object is picked up by becoming parented to the hand
if (Input.GetMouseButtonDown(0) && !Network.isServer)
{
networkView.RPC("MouseInput", RPCMode.All, 0);
}
if (mouseButton == 0 && canPick)
{
mouseButton = 2;
isPicking = true;
canPick = false;
pickUpObject.rigidbody.useGravity = false;
pickUpObject.rigidbody.isKinematic = true;
pickUpObject.collider.isTrigger = false;
pickUpObject.transform.parent = collider.transform;
objPosition = pickUpObject.transform.position;
pickUpObject.AddComponent("Identifier");
}
[RPC]
void MouseInput(int button)
{
mouseButton = button;
}
When I run this, the server gives me an error saying "Can't send RPC function because the target is not connected to the server."
Just for some more information which may play a role... The hand object that this script is attached to is a child of the player's avatar. The root parent (avatar) has a networkview, this hand object has a networkview, and a voice object (which is a child of avatar but not a parent of hand) also has a networkview.