我使用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;
}
}
此外,主机工作正常,所有移动都通过网络传递。我可以在客户端看到主机转换更新。
我似乎尝试了一切,我没有得到任何警告。另外,我为所有非本地玩家禁用了摄像头,音频监听器和播放器控制器。
所以我对如何继续下去几乎是空白。
答案 0 :(得分:0)
我的猜测是你需要将服务器上的播放器移动到同步。 尝试移动和旋转命令。