Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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# Unity3d:生成网络刚体投射物时的服务器延迟_C#_Unity3d_Unity5 - Fatal编程技术网

C# Unity3d:生成网络刚体投射物时的服务器延迟

C# Unity3d:生成网络刚体投射物时的服务器延迟,c#,unity3d,unity5,C#,Unity3d,Unity5,我在跟踪,但我在“子弹”方面遇到了一些麻烦 根据玩家预制件上的繁殖点位置,通过命令在服务器端繁殖每个子弹预制件。基本系统运行良好,但对于除主机之外的所有玩家,繁殖点和繁殖子弹的位置之间存在很大的延迟 正如预期的那样,子弹是根据玩家在服务器上的位置正确生成的。然而,这是球员的客户立场背后的原因 有解决办法吗?我应该使用刚体吗?我见过一些使用光线投射的方法,这可能是一种改进,但我希望能够看到射弹在空中飞行。任何帮助都将不胜感激 有关PlayerController代码仅供参考: using Unit

我在跟踪,但我在“子弹”方面遇到了一些麻烦

根据玩家预制件上的繁殖点位置,通过命令在服务器端繁殖每个子弹预制件。基本系统运行良好,但对于除主机之外的所有玩家,繁殖点和繁殖子弹的位置之间存在很大的延迟

正如预期的那样,子弹是根据玩家在服务器上的位置正确生成的。然而,这是球员的客户立场背后的原因

有解决办法吗?我应该使用刚体吗?我见过一些使用光线投射的方法,这可能是一种改进,但我希望能够看到射弹在空中飞行。任何帮助都将不胜感激

有关PlayerController代码仅供参考:

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class PlayerController : NetworkBehaviour {

    public float speed;
    public float turnSpeed;

    public GameObject bulletPrefab;
    public Transform bulletSpawn;

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

        float power = Input.GetAxis ("Vertical") * Time.deltaTime * speed;
        float turn = Input.GetAxis ("Horizontal") * Time.deltaTime * turnSpeed;

        transform.Rotate(0, turn, 0);
        transform.Translate (power, 0, 0);

        if (Input.GetKeyDown (KeyCode.Space)) {
            CmdFire ();
        }
    }

    [Command]
    void CmdFire() {
        var bullet = (GameObject)Instantiate (bulletPrefab, bulletSpawn.position, bulletSpawn.rotation);

        bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * 6;

        NetworkServer.Spawn (bullet);

        Destroy (bullet, 2.0f);
    }

}
使用UnityEngine;
使用UnityEngine。联网;
使用系统集合;
公共类PlayerController:网络行为{
公众浮标速度;
公共浮动转速;
公共游戏对象公告;
公共产品的生产;
无效更新(){
如果(!isLocalPlayer){
返回;
}
浮动功率=Input.GetAxis(“垂直”)*Time.deltaTime*速度;
浮动旋转=Input.GetAxis(“水平”)*Time.deltaTime*旋转速度;
变换。旋转(0,旋转,0);
transform.Translate(幂,0,0);
if(Input.GetKeyDown(KeyCode.Space)){
CmdFire();
}
}
[命令]
虚火{
var bullet=(游戏对象)实例化(BulletPrefact、bulletSpawn.position、bulletSpawn.rotation);
bullet.GetComponent().velocity=bullet.transform.forward*6;
NetworkServer.Spawn(项目符号);
销毁(子弹,2.0f);
}
}