0

我使用 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;
}
}

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

播放器预制网络组件 播放器预制网络组件

网络管理器配置 在此处输入图像描述

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

所以我对如何进行几乎一无所知。

4

1 回答 1

0

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

于 2018-04-13T11:28:54.383 回答