Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты
к Руководству

MonoBehaviour.OnTriggerEnter2D(Collider2D)

Параметры

other Другой Collider2D участвовал в этом столкновении.

Описание

Отправляется, когда другой объект входит в триггерный коллайдер, прикрепленный к этому объекту (только 2D-физика).

Дополнительная информация о другом коллайдере сообщается в параметре Collider2D, передаваемом во время вызова.

Это сообщение отправляется триггеру Collider2D и Rigidbody2D (если есть), к которому принадлежит триггер Collider2D, и Rigidbody2D (или Collider2D, если Rigidbody2D отсутствует), который касается триггера.

Примечание. Триггерные события отправляются только в том случае, если к одному из коллайдеров также подключен Rigidbody2D. Триггерные события отправляются отключенным MonoBehaviours, чтобы разрешить активацию Behaviours в ответ на коллизии.

Смотрите также: класс Collider2D, OnTriggerExit2D, OnTriggerStay2D.

В следующих двух примерах скрипта создается демонстрация OnTriggerEnter2D. В примере 1 создается спрайт с логотипом Unity, GameObject1. С этим спрайтом сталкивается спрайт Example2, GameObject2. Сценарий Example1 создает Rigidbody2D. В этом скрипте используется кинематический режим. Пример 2 поддерживает метод OnCollisionEnter2D. Это вызывается, когда GameObject2 сталкивается с GameObject1. Код скрипта для GameObject2 определяет время, необходимое для столкновения с GameObject1. GameObject2 неоднократно анимируется слева направо. Когда в левой части экрана GameObject2 перемещается вправо к GameObject1. Когда они столкнулись, GameObject2 возвращается влево. Левая сторона экрана является отправной точкой для GameObject2. Правая сторона экрана — это постоянная позиция GameObject1. Код сценария Example2 заставляет GameObject2 конфликтовать с GameObject1. GameObject2 остается в столкновении в течение короткого промежутка времени.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Example1 : MonoBehaviour { private BoxCollider2D bc; private Rigidbody2D rb; void Awake() { SpriteRenderer sprRend = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer; sprRend.color = new Color(0.9f, 0.9f, 0.9f, 1.0f); bc = gameObject.AddComponent<BoxCollider2D>() as BoxCollider2D; bc.size = new Vector2(1.3f, 1.3f); bc.isTrigger = true; rb = gameObject.AddComponent<Rigidbody2D>() as Rigidbody2D; rb.bodyType = RigidbodyType2D.Kinematic; } void Start() { gameObject.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("logo"); gameObject.transform.Translate(4.0f, 0.0f, 0.0f); gameObject.transform.localScale = new Vector2(2.0f, 2.0f); } }

Пример 2. Это спрайт, который перемещается вперед и назад и срабатывает в Примере 1.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Example2 : MonoBehaviour { private float spriteMove; void Awake() { SpriteRenderer sprRend; sprRend = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer; sprRend.color = new Color(0.9f, 0.9f, 0.9f, 1.0f); BoxCollider2D bc; bc = gameObject.AddComponent<BoxCollider2D>() as BoxCollider2D; bc.size = new Vector2(1.3f, 1.3f); bc.isTrigger = true; } void Start() { gameObject.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("circle"); gameObject.transform.Translate(-4.0f, 0.0f, 0.0f); spriteMove = 0.1f; } void FixedUpdate() { gameObject.transform.Translate(spriteMove, 0.0f, 0.0f); if (gameObject.transform.position.x < -4.0f) { // move GameObject2 to the right spriteMove = 0.1f; } } // when the GameObjects collider arrange for this GameObject to travel to the left of the screen void OnTriggerEnter2D(Collider2D col) { Debug.Log(col.gameObject.name + " : " + gameObject.name + " : " + Time.time); spriteMove = -0.1f; } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3