2016-09-01 3 views
0

Я разрабатываю 2D Action-Platformer в Unity, у меня есть функция обхода, которая активируется, когда воспроизведение нажимает S, но мне нужно, чтобы конвертировать головной коллайдер в триггер, чтобы игрок ползет в ограниченное пространство, игра поднимается на это и мешает им снова стоять, что может вызвать сбои. Как конвертировать головной коллайдер в триггерПреобразование коллайдера в триггер

Бонус: Игрок придерживается других коллайдеров, поэтому, если кто-то знает, как исправить это, мы будем очень благодарны.

+2

Не пытайтесь преобразовать коллайдер в спусковой крючок, иметь головной коллайдер и спусковой крючок вокруг головы, а также деактивировать коллайдер, когда игрок сканирует и активирует триггер. И наоборот, когда он стоит. – JanR

+1

Вы также можете сделать raycast с земли вверх или от его головы вверх, чтобы обеспечить достаточное пространство для стояния, если не тогда, то предотвратить постоянное действие – JanR

ответ

0

Вы можете преобразовать коллайдер в триггер во время выполнения, используя isTrigger свойство коллайдера, например, так:

private Collider collider ; 

void Start() { 
    // Assuming this script goes on the head gameobject 
    collider = this.GetComponent<Collider>(); 
} 
void OnCollisionEnter(Collision col) { 
    this.collider.isTrigger = true; 
} 
void OnTriggerExit(Collider other) { 
    this.collider.isTrigger = false; 
} 

@JanR предложенное решение, вероятно, чище. Но поскольку ваш вопрос заключался в том, как преобразовать коллайдер в триггер, я подумал, что стоит ответить.

В любом случае, в зависимости от геометрии сцены это всегда может стать беспорядочным. У вас будут проблемы при наличии двух или более коллайдеров, взаимодействующих с вашим коллайдером/триггером головы.

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

Вот почему большинство из нас использует raycast вместо коллайдеров/триггеров, чтобы справиться с такими ситуациями.

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