我使用 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;
}
}
此外,主机工作正常,所有移动都通过网络进行通信。我可以在客户端看到主机转换更新。
我似乎已经尝试了一切,我没有收到任何警告。另外,我为所有非本地播放器禁用了摄像头、音频侦听器和播放器控制器。
所以我对如何进行几乎一无所知。