Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 子弹不会向前移动,而是停留在枪的位置_C#_Unity3d_Multiplayer_Game Development - Fatal编程技术网

C# 子弹不会向前移动,而是停留在枪的位置

C# 子弹不会向前移动,而是停留在枪的位置,c#,unity3d,multiplayer,game-development,C#,Unity3d,Multiplayer,Game Development,当游戏在客户端[localserver]上启动时,子弹不会在空间中向前移动。他们只是呆在枪的位置上。有关此问题的说明,请参见下图: 这是我的剧本 void Update() { if (!isLocalPlayer) { return; } if (Input.GetKey(KeyCode.Mouse0)) { CmdBulletFire(); } } [Comma

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

这是我的剧本

    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);
  }
问题可能是什么?我如何解决它


仍然存在问题:

在更新函数中,在调用CmdBulletFire之前,必须确保这是isLocalPlayer

您的新更新功能:

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

    if (Input.GetKey(KeyCode.Mouse0))
    {
        CmdBulletFire();
    }
}
最后,请确保执行以下操作:

1.将NetworkTransform和NetworkIdentity组件附加到预置

2.向NetworkManager注册预置:


这可能应该转移到-我们没有看到很多非基于web的问题here@KaiQing当与编程相关时,Unity3D问题完全在这里的主题上。@Bart-看起来我们将通过OJ的解决方案是否有效来了解。否则我怀疑这会长蜘蛛网。@KaiQing如果它在这里长蜘蛛网,它也会在游戏开发中得到它们。我这样做,但问题仍然是:我不知道如何帮助你更多。您可以编辑您的答案并添加新代码吗。还要证明你已经完成了我在1和2中所说的。你可以用tabOh探长的截图来做这两件事,我觉得还可以。我更希望您在编辑中添加新代码,而不是删除问题中的旧代码。你能检查一下这在非网络代码中是否有效吗?还有,当你用速度而不是加力来加力时会发生什么?bullet.GetComponent.velocity*bullet.transform.forward*100f?在非网络中,我没有任何问题,但在网络中存在问题,当设置子弹散射的速度时,请尝试bullet.GetComponent.velocity*bullet.transform.forward*100f;我说的不是bullet.GetComponent.AddForcetransform.TransformDirectionVector3.forward*50000f;?如果这不起作用,那么我不知道你目前的问题是什么
void Update()
{
    if (!isLocalPlayer)
    {
        return;
    }

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