Изменить, какие объекты управляют кнопкой со временем - PullRequest
0 голосов
/ 22 марта 2019

Я делаю игру, в которой игрок может вращать только тот тайл, на котором он стоит.Я использую OnCollisionStay и Input.horizontally и вертикальный, чтобы достичь этого сейчас.Он отлично работает с клавиатурой, но моя цель - сделать это для мобильных устройств.

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

Спасибо!

void OnCollisionStay(Collision collision)
{
  if (collision.gameObject.tag == "Player")
  {
      float rotateright = Input.GetAxis("Horizontal") * rotatespeed;
    float rotateleft = Input.GetAxis("Vertical") * rotatespeed;

    transform.Rotate(0, rotateright, 0);
    transform.Rotate(rotateleft, 0, 0);
  }
}

1 Ответ

0 голосов
/ 23 марта 2019

Использование OnCollisionStay для подобной функциональности не является идеальным.

Например, если ваш объект персонажа перекрывает два коллайдера одновременно, он будет вращать оба одновременно, что приведет к всевозможному пространственному хаосу.

Лучшая идея - сохранить текущий тайл в общедоступной переменной класса и работать с ней через отдельную функцию.Затем вы можете использовать OnCollisionEnter, чтобы проверить, когда была введена новая плитка.

Пример:

GameObject currentTile;

void Update (){

    ControlCheck();

}

public void ControlCheck(){

    if (currentTile != null){

        // Rotation code goes here

    }

}

void OnCollisionEnter(Collision obj){

    currentTile = obj.transform.gameObject;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...