当游戏在客户端[localserver]上启动时,子弹不会在太空中向前移动。他们只是固定在枪的位置。请参见下图以查看问题的说明:
Network Manegar: https://imgur.com/mfcBo61
Player: https://imgur.com/DuOIy67
Bullet: https://imgur.com/cVq5HFU
这是我的剧本
void Update()
{
if (!isLocalPlayer)
{
return;
}
if (Input.GetKey(KeyCode.Mouse0))
{
CmdBulletFire();
}
}
[Command]
void CmdBulletFire()
{
// create the bullet prefab
GameObject bullet = Instantiate(bulletPrefab, bulletSpawn.position, bulletSpawn.rotation);
//add velocity to bullet
bullet.GetComponent<Rigidbody>().AddForce(transform.TransformDirection(Vector3.forward * 50000f));
//Spawn the bullet
NetworkServer.Spawn(bullet);
//Destroy the bullet
Destroy(bullet, 5f);
}
这个问题可能是什么,我该如何解决?
仍然是问题:(
最佳答案
在更新功能中,您必须在调用isLocalPlayer
之前确保它是CmdBulletFire()
。
您的新更新功能:
void Update()
{
if (!isLocalPlayer)
{
return;
}
if (Input.GetKey(KeyCode.Mouse0))
{
CmdBulletFire();
}
}
最后,请确保您执行以下操作:
1.将
NetworkTransform
和NetworkIdentity
组件连接到预制件。2.将预制件注册到NetworkManager:
enter image description here
关于c# - 子弹不会前进,但会停留在枪支的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50239549/