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