2014-12-09 2 views
1

Я получаю странные результаты при попытке синхронизировать позиции игроков в сети. У меня есть сетевая игра, в которой я создаю двух игроков в мире. У каждого игрока есть сетевой вид, на нем нет наблюдаемого объекта. Каждое фиксированное обновление, я делаю вызов RPC для обновления позиции игрока на сервере. Однако позиция только начинает обновляться, когда я перемещаю игрока вправо. Любое другое движение не будет показываться, пока я не начну правильно перемещать плеер, и в этом случае позиция будет немедленно обновляться. Вот соответствующий код:Странные результаты Синхронизация позиций игрока по сети

void FixedUpdate() 
{ 
    if (networkView.isMine) 
    { 
     grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround); 
     anim.SetBool("ground", grounded); 

     anim.SetFloat("vSpeed", rigidbody2D.velocity.y); 

     float move = Input.GetAxis("Horizontal"); 

     anim.SetFloat("speed", Mathf.Abs(move)); 

     rigidbody2D.velocity = new Vector2(move * MaxSpeed, rigidbody2D.velocity.y); 


     float speed = move * MaxSpeed; 
     networkView.RPC("UpdateNetworkPosition", RPCMode.Others, LastPosition, speed); 

    } 
} 

[RPC] 
void UpdateNetworkPosition(Vector3 newPosition, float speed) 
{ 
    Debug.Log("Updating network position"); 
    transform.position = Vector3.Lerp(transform.position, newPosition, Time.deltaTime * speed); 
} 

Спасибо за любой совет!

ответ

0

Так что получается, что ответ для этого был довольно простым. Я проходил скорость, с которой персонаж двигался в RPC, чтобы я мог поднять персонажа на правильную скорость, чтобы он правильно двигался по сети. Однако, поскольку я использовал скорость, определяемую умножением коэффициента скорости на Input.GetAxis, в любое время, когда я двигался влево, я отправлял RPC отрицательное значение скорости. Поэтому он пытался залезть из одной позиции в другую со скоростью, меньшей нуля, и, следовательно, она не двигалась. Проблема была решена с использованием абсолютного значения для моего коэффициента скорости, с помощью которого можно было прорваться.

Смежные вопросы