Unity UNET - 客户无法移动

时间:2018-04-07 16:51:04

标签: c# unity3d unity-networking unity3d-unet unet

我使用UNET制作多人FPS。我有一个播放器预制件,网络标识脚本具有我已启用的属性本地播放器权限。

我的PlayerMotor脚本如下:

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class PlayerMotor : MonoBehaviour {

public static PlayerMotor instance;

private Vector3 velocity, rotation, cameraRotation;
private Rigidbody rb;
[SerializeField]
private Camera playerCamera;

private void Start(){

    if (instance == null){
        instance = this;
    }

    rb = GetComponent<Rigidbody>();
}

private void FixedUpdate(){

    //Perform Movement Using Vector Property
    Move();
    //Perform Player Rotation Using rotation Property - (Y-Axis)
    //Perform Camera Rotation Using cameraRotation Property - (X-Axis)
    Rotate();

}

private void Move(){
    if (velocity != Vector3.zero){
        rb.MovePosition(transform.position + (velocity * Time.fixedDeltaTime));
    }
}

private void Rotate(){
    rb.MoveRotation(rb.rotation * Quaternion.Euler(rotation));

    if(playerCamera != null){
        playerCamera.transform.Rotate(-cameraRotation);
    }
}

public void UpdateVelocity(Vector3 _velocity){
    velocity = _velocity;
}

public void UpdateRotation(Vector3 _rotation){
    rotation = _rotation;
}

public void UpdateCameraRotation(Vector3 _cameraRotation){
    cameraRotation = _cameraRotation;
}
}

此外,主机工作正常,所有移动都通过网络传递。我可以在客户端看到主机转换更新。

播放器预制网络组件 Player prefab network components

网络管理员配置 enter image description here

我似乎尝试了一切,我没有得到任何警告。另外,我为所有非本地玩家禁用了摄像头,音频监听器和播放器控制器。

所以我对如何继续下去几乎是空白。

1 个答案:

答案 0 :(得分:0)

我的猜测是你需要将服务器上的播放器移动到同步。 尝试移动和旋转命令。