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