子弹不会向前移动,但会卡在枪的位置

时间:2018-05-08 17:52:11

标签: c# unity3d multiplayer game-development

当游戏在客户端[localserver]上启动时,子弹不会在太空中向前移动。他们只是固定在枪的位置。有关问题的说明,请参见下图:

enter image description here

 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);
  }

问题是什么,我该如何解决?

仍然是问题:(

1 个答案:

答案 0 :(得分:4)

在您的更新功能中,您必须在调用isLocalPlayer之前确保这是CmdBulletFire()

您的新更新功能:

void Update()
{
    if (!isLocalPlayer)
    {
        return;
    }

    if (Input.GetKey(KeyCode.Mouse0))
    {
        CmdBulletFire();
    }
}

最后,请确保执行以下操作:

1.将NetworkTransformNetworkIdentity组件附加到预制件上。

2.将预制件注册到NetworkManager:

enter image description here