В чем подвох? А?
Прохожу сейчас книгу "Разработка игр на unity 2018 за 24 часа". Одно из практических заданий: Сейчас мы создадим интерактивное приложение, в котором используется движение и триггеры. Упражнение требует, чтобы вы творчески подошли к поиску решения (потому что здесь оно не представлено). Если вы оказались в тупике и нуждаетесь в помощи, вы можете обратиться к файлам примеров для часа 9.
- Создайте новый проект или сцену. Добавьте на сцену куб и поместите его в позицию с координатами (–1,5, 0, –5). Задайте кубу масштаб (0,1, 2, 2) и присвойте ему имя LTrigger.
- Продублируйте куб (щелкнув правой кнопкой мыши по кубу на панели Hierarchy и выбрав команду Duplicate). Назовите новый куб RTrigger и поместите его в позицию с координатами (1,5, 0, –5).
- Добавьте на сцену сферу и поместите ее в позицию с координатами (0, 0, –5). Добавьте в сферу компонент Rigidbody и сбросьте флажок Use Gravity.
- Создайте скрипт под названием TriggerScript и прикрепите его к объектам LTrigger и RTrigger. Создайте скрипт под названием MotionScript и прикрепите его к сферe
-
- Теперь начинается самое интересное. Вам нужно создать в игре следующие функциональные возможности. Игрок должен иметь возможность перемещать сферу с помощью клавиш со стрелками. Когда сфера входит в один из триггеров, покидает его или остается в нем, в консоль должно выводиться соответствующее сообщение: имя триггера (LTrigger или RTrigger) и тип взаимодействия (вход, выход, нахождение внутри). В этом упражнении есть небольшой подвох, который вам придется преодолеть, чтобы справиться с задачей
Код:
public class MovementScript : MonoBehaviour
{
void Update ()
{
float mX = Input.GetAxis("Mouse X") / 10f;
float mY = Input.GetAxis("Mouse Y") / 10f;
transform.Translate(mX, mY, 0);
}
}
public class TriggerScript : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision)
{
print(gameObject.name + " enter");
}
private void OnTriggerStay2D(Collider2D collision)
{
print(gameObject.name + " stay");
}
private void OnTriggerExit2D(Collider2D collision)
{
print(gameObject.name + " exit");
}
}
Так вот, сфера просто проходит через триггеры и им вообще все равно. Я мог бы скипнуть данное упражнения, но ответа в интернете нет, а в решениях к задаче код аналогичный.Это уже дело принципа, может знает кто в чем тут дело?
Источник: Stack Overflow на русском