Страница 1 из 1

FPS Controller collision

СообщениеДобавлено: 05 июл 2018, 00:31
kor1b
Здравствуйте. Столкнулся с проблемой: не получается обработать столкновение FPS и стены. Пробовал через OnCollisionEnter, OnControllerColliderHit - ничего не выходит. Добавил на ФПС и на стену капсульный/кубический коллайдер не триггерный - ноль реакции. Код примерно такой
Синтаксис:
Используется csharp
void OnControllerColliderHit(ControllerColliderHit hit)
    {
      Debug.Log("Collision");
       
    }

В чем моя ошибка?

Re: FPS Controller collision

СообщениеДобавлено: 05 июл 2018, 07:05
1max1
a charactercontroller висит на игроке?

Re: FPS Controller collision

СообщениеДобавлено: 05 июл 2018, 07:11
kor1b
1max1 писал(а):a charactercontroller висит на игроке?

Да, все есть. Это ФПС из стандартных ассетов

Re: FPS Controller collision

СообщениеДобавлено: 05 июл 2018, 09:54
Xtir
OnControllerColliderHit is called when the controller hits a collider while performing a Move.

Re: FPS Controller collision

СообщениеДобавлено: 05 июл 2018, 16:44
kor1b
Xtir писал(а):OnControllerColliderHit is called when the controller hits a collider while performing a Move.

Видел. Но сразу вопрос: должен двигаться ФПС или объект, на котором висит скрипт (в моем случае стена)? Я пробовал с тем, что двигается ФПС, но ничего не выводится (

Re: FPS Controller collision

СообщениеДобавлено: 06 июл 2018, 11:05
Xtir
Двигаться должен твой фпс, причём двигаться он должен таким способом
Синтаксис:
Используется csharp
GetComponent<CharacterController>().Move(transform.forward);
или таким
Синтаксис:
Используется csharp
GetComponent<CharacterController>().SimpleMove(transform.forward);
, иначе OnControllerColliderHit работать не будет. Естественно на объектах с которыми он должен сталкиваться, должны быть установлены коллайдеры.

Re: FPS Controller collision

СообщениеДобавлено: 07 июл 2018, 00:14
kor1b
Xtir писал(а):Двигаться должен твой фпс, причём двигаться он должен таким способом
Синтаксис:
Используется csharp
GetComponent<CharacterController>().Move(transform.forward);
или таким
Синтаксис:
Используется csharp
GetComponent<CharacterController>().SimpleMove(transform.forward);
, иначе OnControllerColliderHit работать не будет. Естественно на объектах с которыми он должен сталкиваться, должны быть установлены коллайдеры.

Ааа, так вот в чем дело. Я неправильно понял понятие Move (думал, что объект просто должен находится в движении). Отыскал нужный фрагмент в скрипте ФПС из стандартных ассетов и все заработало! Большое спасибо ^:)^