- Home /
Networking bad mouseposition for client
Hi, To put the context, i'm on a 2D unity project. And i have currently a very simple project. My project can host and be join by a player. For each player there is a player prefab which is spawn. Each player can shoot little projectiletoward the mouse cursor. But when i shoot a projectile, the host shoot correctly but the client doesn't aim in the good direction and i can't understand why. I'm working with the netcode manager.
Here is the code for the player
public class Player : NetworkBehaviour
{
[SerializeField]
public GameObject Projectile;
public NetworkVariable<FixedString64Bytes> PlayerName = new NetworkVariable<FixedString64Bytes>("Test");
public NetworkVariable<float> Health = new NetworkVariable<float>(100);
void Update()
{
if (!IsLocalPlayer)
return;
var x = Input.GetAxis("Horizontal")*0.1f;
var y = Input.GetAxis("Vertical")*0.1f;
transform.Translate(x, y, 0);
if(Input.GetButtonDown("Fire1"))
if(IsServer)
{
Shoot();
}
else
{
ShootServerRpc();
}
}
[ServerRpc]
void ShootServerRpc()
{
Shoot();
}
void Shoot()
{
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
GameObject go = Instantiate(Projectile, transform.position, Quaternion.LookRotation(Vector3.forward, mousePos - transform.position));
go.GetComponent<NetworkObject>().Spawn();
}
}
And the code for the projectile :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Projectile : MonoBehaviour
{
float velocity = 10f;
void Update()
{
transform.Translate(Vector3.up * Time.deltaTime * velocity);
}
}
Do you have any idea what am i doing wrong? Thanks for your answer.
Answer by miyoku · Apr 25 at 12:18 AM
Hi,
I've finally found my trouble. I need to calculate the rotation and position outside the ServerRPC function. Otherwise, it takes only the mouseposition of the server. Even if a client call it.