Unity 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;
}
}

Кроме того, хост работает нормально, и все движения передаются по сети. Я вижу, что на стороне клиента происходит обновление преобразования хоста.

Готовые сетевые компоненты проигрывателя  Сборные сетевые компоненты проигрывателя

Конфигурация сетевого менеджера  введите описание изображения здесь

Я вроде все перепробовал, предупреждений не получаю. Кроме того, я отключаю камеру, аудиослушатель и контроллер плеера для всех нелокальных плееров.

Так что я совершенно не понимаю, как действовать дальше.


person Hussain Mustafa    schedule 07.04.2018    source источник


Ответы (1)


Я предполагаю, что вам нужно переместить игрока на сервер, чтобы он синхронизировался. Попробуйте использовать команды перемещения и поворота.

person Marek Legris    schedule 13.04.2018