unity ontriggerenter что это

Справочник: C#

Общее

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

Инициализация переменной

Все переменные в C# должны быть объявлены (инициализированы) до их применения. Например:

Задать значение переменной можно, в частности, с помощью оператора присваивания — знак «=». Кроме того, при объявлении переменной можно сразу задать ее значение. Например:

Переменные численных типов можно складывать, вычитать, умножать и делить:

+ — операция сложения;

— операция вычитания;

* — операция умножения;

/ — операция деления.

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

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

Бывает, что нужно проверить несколько вариантов условия. Для этого используется блок else if:

Для сравнения значений существуют следующие операторы:

> больше

>= больше или равно.

== равно.

!= не равно.

Функция — участок кода с собственными именем, который принимает на вход какие-то данные, что-то с ними делает и возвращает обратно результат (хотя возможен вариант когда функция ничего не принимает и не возвращает,а просто что-то делает).

Посмотри на пример:

У нас есть разные люди с данными в виде отдельных фамилии, имени, отчества, которые надо объединить и вывести на экран. Обрати внимание, что два раза повторяется один и тот же участок кода — склеивание трех строк в одну. Функция в нашем случае будет выглядеть вот так:

Слова public static отложим пока в сторону, string означает, что функция вернет назад строку, CreateFio(string surname, string name, string otchestvo) — название функции и описание того, что она принимает на вход три строки.

Теперь та же программа будет выглядеть таким образом:

Unity Engine

Эта функция клонирует объект и размещает клон в нужно тебе месте.

Ты можешь клонировать GameObject или компонент. Если ты клонируешь компонент, то GameObject, к которому он присоединен, также будет клонирован. В обоих случаях все дочерние объекты также будут клонированы. Все свойства при этом будут соответствовать оригинальному объекту.

Ты можешь клонировать объект, который размещен на сцене или prefab.

OnTriggerEnter(Collider) — это функция событий.

OnTriggerEnter вызывается, когда Collider other входит в триггер. Код, который будет размещен в этой функции, будет выполнен один раз.

OnTriggerExit(Collider) — это функция событий.

OnTriggerEnter вызывается, когда Collider other выходит из триггер. Код, который будет размещен в этой функции, будет выполнен один раз.

OnTriggerStay(Collider) — это функция событий.

OnTriggerStay вызывается почти каждый кадр, пока Collider other находится в триггере. Код, который будет размещен в этой функции, будет выполнятся до тех пор, пока Collider other не выйдет за пределы триггера.

Start — это функция событий.

Функция Start вызывается до обновления первого кадра(first frame) только если скрипт включен.

Для объектов добавленных на сцену, функция Start будет вызываться во всех скриптах до функции Update. Естественно, это не может быть обеспечено при создании объекта непосредственно во время игры.

Каждый объект в сцене имеет Transform. Компонент Transform содержит в себе следующие свойства: позиция (position), поворот (rotation) и масштаб объекта (scale).

Значения положения, вращения и масштаба Transform’а измеряются относительно его родителя. Если у Transform’а нет родителя, тогда все эти свойства измеряются в мировом пространстве.

Игра — это что-то вроде анимации, в которой кадры генерируются на ходу. Ключевой концепт в программировании игр заключается в изменении позиции, состояния и поведения объектов в игре прямо перед отрисовкой кадра. Такой код в Unity обычно размещают в функции Update. Update вызывается перед отрисовкой кадра и перед расчётом анимаций.

Этот справочник постоянно дополняется. Если у тебя есть, что добавить, тебе хочется что-то убрать или изменить, а может просто сказать «спасибо» — пиши Администратору сайта.

Источник

Unity3d. Уроки от Unity 3D Student (B13-B16)

Предыдущие уроки вы можете найти по следующим ссылкам:
Уроки B01-B03
Уроки B04-B08
Уроки B09-B12

PS: Так же исправленны некоторые ошибки в предыдущих уроках, большое спасибо хабравчанинам ufomesh и MikhailS.

Базовый Урок 13 — Определение столкновений с триггером

В уроке рассказывается, как определить столкновения между невидимыми для игрока объектами, используя неосязаемые «триггер коллайдеры» (trigger colliders).

Если вы хотите определить столкновения, но не ходите, чтоб столкнувшийся объект остановился, вам требуется использовать триггер (trigger)

Триггеры позволяют вам определить, где именно расположен объект на сцене (во время запуска приложения).

На нашей сцене имеется куб («box» с rigidbody), который падает на синюю платформу («platform»).
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Естественно платформа останавливает куб, поскольку среди ее компонентов присутствует box collider.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

У компонента box collider есть чекбокc Is Trigger. Если включить
его и запустить сцену снова, то куб провалиться через платформу.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Таким образом мы можем создавать столкновения, которые не должны быть видны пользователю. Например, отключим компонент Mesh Renderer у нашей платформы. Мы по прежнему видем зеленый контур объекта, если выделим его в Hierarchy View.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Если мы нажмем play, то куб провалиться через нивидимую платформу, но пока мы не можем ничего узнать о произошедшем.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Создадим скрипт, назовем его Trigger и добавим в тело класса следующий код

Добавим скрипт к платформе. Теперь, как тольку куб пройдет сквозь платформу, вы увидете сообщение «Box went through!» в консоли.

Базовый Урок 14 — GUI текст и счетчики

В уроке рассказывается, как отобразить информацию о счетчике на экран используя компонент GUI Text

Чтобы отображать текстовую информацию на экран воспользуемся элементом GUI Text.
Добавим его на сцену — Game Object->Create Other->GUI Text.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Так же, обратите внимание, чтоб у камеры был включен компонент GUILayer.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Текст можно редактировать напрямую через редактор (поле Text).
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Но мы воспользуемся скриптом для этого. Добавим скрипт (GUITextExample). Код будем писать в метод Update():

Если зайти в стравку о параметре guiText.text, то увидите следующие:
var text: String
Description
The text to display.

То есть, при передачи параметра мы должны быть уверены что передаем string.

Теперь если запустить игру, то текст поменяется.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Попробуем отобразить счетчик. В класс добавим переменную-счетчик (Counter) и немного подправим код в методе Update().

В итоге Unity выдаст ошибку:

Нам требуется привести переменную типа int к типу string.
Это можно сделать многими способами. Вот некоторые из них:

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

Жмем play и наблюдаем как увеличивается значения переменной-счетчика.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Мы так же можем изменить шрифт текста, если у вас в проекте есть дополнительный шрифт (font).

Чтоб поменять шрифт, достаточно перетащить его в соответствующие поле компонента GUIText (Font).
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Тут же можно поменять другие параметры, такие как размер (font size), выравнивание (alignment) и некоторые другие.

Базовый Урок 15 — Добавление компонентов с помощью скриптов

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

Для того, чтобы добавить компонент в run-time воспользуемся скриптами.
В нашем примере у нас снова есть платформа («platform») и ящик(«box» с rigidbody) который на нее падает.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Попробуем добивать компонент к платформе, как только ящик упадёт на неё.
Добавим скрипт addComp В класс добивим следующий код:

Скрипт добавим к ящику. Жмем play и видим — как только ящик падает на платформа, она тоже начнёт падать.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Но в консоле вы увидите предупреждение:

Мы получили это сообщение, поскольку пытаемся добавить компонент Rigidbody каждый раз, когда ящик сталкивается с платформой, то есть — мы добавляем его более одного раза. Чтоб этого не происходило, нам нужно добавить проверку и добавлять компонент, только в случае его отсутствия. Добавим в OnCollisionEnter() еще одно условие:

Теперь запустим приложение и убедимся, что в консоли отсутствует предупреждение.

Базовый Урок 16 — Переключение между сцен

В уроке рассказывается, как написать скрипт, для переключения между сценами в проекте Unity.

Для полноценной работы с Unity нужно уметь переключаться между различными сценами, для загрузки разных уровней, меню и другого контента. Для этого воспользуемся методом LoadLevel() класса Application.

В нашем примере есть 2е сцены. Первая («Level») — с кубом и плоскостью («floor»), на которую куб падает.Вторая («gameover») — с зеленым фотон и GUI Text’ом — «YOU WIN!»
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Добавим скрипт (LoadLevel) со следующим кодом:

Жмем play. В итоге в консоли появилась ошибка:

Дело в том, что когда мы работаем с классом Application, мы должны указывать в настройках сборки (Build Settings) все сцены, которые хотим загружать в итоговом приложении. Перейдем в настройки сборки File->Build Settings и перетащим сцены Level и gameover из Project View в верхнее поле Buil Settings
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Немного подредактируем наш скрипт так, чтоб мы могли указывать имя уровня из окна редактора, таким образом мы делаем наш скрипт более «гибким».

В окне редактора, на против соответствующего поля компонента, напишем название сцены, которую хотим загрузить.
unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

Источник

Функции событий столкновений: OnCollisionEnter, OnCollisionEnter2D, OnCollisionStay, OnTriggerEnter

Этот пост содержит в себе ответы на такие частые вопросы, как:

unity ontriggerenter что это. Смотреть фото unity ontriggerenter что это. Смотреть картинку unity ontriggerenter что это. Картинка про unity ontriggerenter что это. Фото unity ontriggerenter что это

1 ответ 1

Список функций:

В первую очередь перечислим все подобные функции. Всего их 12:

Те же функции, но для 2D объектов:

! Все ссылки рабочие и направляют на страницу своей функции

О функциях OnCollision. и их 2D версиях

Из документации:

Все вышеперечисленные тезисы верны в том числе и для 2D версий функций.

Аргумент:
Все они принимают в качестве первого аргумента — Collision (не путать с Collider ). Класс Collision содержит информацию о точках соприкосновения, скорости воздействия и т.д.

Требования:

Важно:

О функциях-триггерах OnTrigger. и их 2D версиях

Collider с свойством триггера не является телесным и ни с кем не сталкивается (физически).

Триггер используется как зона, которая способна реагировать на события входа/выхода/нахождения в ней чего-либо и запуска неких сценариев.

Из документации:

Все вышеперечисленные тезисы верны в том числе и для 2D версий функций.

Аргумент:
Все они принимают в качестве первого аргумента — Collider (не путать с Collision ), то есть ссылку на компонент объекта, с которым произошло триггерное столкновение.

Требования:

Важно:

Помните также о том, что если вы не используете аргументы, указываемые в функциях (Collision other, Collider collider. ), вам следует их опустить: в таком случае ненужные расчеты не будут производиться. Например:

О переводе в «спящее» состояние

Многие могли сталкиваться с такой ситуацией: на объекте висит Collider, Rigidbody, всё настроено как надо, на объект повешен скрипт с функцией OnCollisionStay, OnTriggerStay или их 2D версиями. Однако при нахождении объекта в коллайдере, эти функции вдруг перестают работать! А если в них поместить Debug.Log для дебага, оказывается, что спустя несколько десятков кадров, объект просто перестает выполнять свою функцию, выводы в консоль прекращаются, и объект, который даже не двигался, будто засыпает! Почему такое происходит?

Дело в том, что Rigidbody действительно может засыпать!

Когда Rigidbody двигается медленнее определенной скорости, считается, что он остановился. После этого объект будет переведен в «спящий» режим. Это сделано для оптимизации: ресурсы процессора не будут расходоваться на обновление Rigidbody, пока он не «проснется» (т.е. снова придет в движение)

В некоторых случаях (например, когда передвижение физического объекта производится через т.н. «телепортацию»), объект может не проснуться, хотя должен. В таком случае его можно принудительно разбудить функцией WakeUp.

Сноски:
1 Здесь и далее под компонентом Collider понимается любой тип коллайдера, любой его наследник. То есть вы можете использовать BoxCollider, SphereCollider, CapsuleCollider, любые 2D коллайдеры: BoxCollider2D, CircleCollider2D — или любой другой коллайдер, соответствующий вашим нуждам.

2 OnTriggerStay вызывается практически каждый кадр, потому что она зависит от физического таймера, и нет необходимости вызывать ее каждый кадр.

Источник

Collider.OnTriggerEnter(Collider)

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Submission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Parameters

Description

When a GameObject collides with another GameObject, Unity calls OnTriggerEnter.

OnTriggerEnter happens on the FixedUpdate function when two GameObjects collide. The Colliders involved are not always at the point of initial contact.

Note: Both GameObjects must contain a Collider component. One must have Collider.isTrigger enabled, and contain a Rigidbody. If both GameObjects have Collider.isTrigger enabled, no collision happens. The same applies when both GameObjects do not have a Rigidbody component.

To use the following code sample, create a primitive GameObject, and attach a Collider and Rigidbody component to it. Enable Collider.isTrigger and Rigidbody.isKinematic. This GameObject will travel forward, until it collides with another GameObject. When a collision occurs, the direction immediately reverses.

Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.

Copyright ©2021 Unity Technologies. Publication Date: 2021-11-20.

Источник

Функции

Функции

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

Как ты видишь, мы дважды наносим урон — один раз Игроку, другой раз Противнику. Представь, что тебе предстоит делать это раз за разом и всегда писать одну и туже команду, а если расчет нанесенного урона будет сложнее, не в одно действие? Тогда тебе и пригодиться Функция:

Слово float означает, что функция вернет назад переменную типа float, DamageDeal(float damage, float armor, float resistance) — название функции и описание того, что она принимает на вход три числа.

Теперь та же программа будет выглядеть таким образом:

Функции событий

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

Например, ты уже видел функцию Update и функцию Start. Разберем несколько из самых важных и часто встречающихся событий, а вообще в Unity доступно гораздо большее количество функций.

Update

Игра — это что-то вроде анимации, в которой кадры генерируются на ходу. Ключевой концепт в программировании игр заключается в изменении позиции, состояния и поведения объектов в игре прямо перед отрисовкой кадра. Такой код в Unity обычно размещают в функции Update. Update вызывается перед отрисовкой кадра и перед расчётом анимаций.

Start

Функция Start вызывается до обновления первого кадра(first frame) только если скрипт включен.

Для объектов добавленных на сцену, функция Start будет вызываться во всех скриптах до функции Update. Естественно, это не может быть обеспечено при создании объекта непосредственно во время игры.

OnTriggerEnter

OnTriggerEnter вызывается, когда Collider other входит в триггер. Код, который будет размещен в этой функции, будет выполнен один раз.

OnTriggerExit

OnTriggerEnter вызывается, когда Collider other выходит из триггер. Код, который будет размещен в этой функции, будет выполнен один раз.

OnTriggerStay

OnTriggerStay вызывается почти каждый кадр, пока Collider other находится в триггере. Код, который будет размещен в этой функции, будет выполнятся до тех пор, пока Collider other не выйдет за пределы триггера.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *