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

MonoBehaviour.OnCollisionEnter2D(Collision2D)

Параметры

other Данные Collision2D, связанные с этим столкновением.

Описание

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

Дополнительная информация о столкновении сообщается в параметре Collision2D, передаваемом во время вызова. Если вам не нужна эта информация, вы можете объявить OnCollisionEnter2D без параметра.

Примечание. События столкновения будут отправляться отключенным MonoBehaviours, чтобы можно было включить поведение в ответ на коллизии.

Смотрите также: класс Collision2D, OnCollisionExit2D, OnCollisionStay2D.

Следующие два примера скрипта создают демонстрацию OnCollisionEnter2D. Пример 1 генерирует (белый) спрайт box с именем GameObject1. Этот спрайт сталкивается со спрайтом Example2 GameObject2, который является спрайтом floor. Спрайт box можно перемещать с помощью клавиш вверх, вниз, влево и вправо. Например, когда box упадет на floor, ее можно поднять вверх с помощью клавиши "вверх". Как только клавиша «вверх» будет отпущена, коробка упадет обратно на floor. Каждый раз, когда box достигает floor, будет выполняться вызов OnCollisionEnter2D. сделанный. GameObject1 просто предоставляет в консоли строку, указывающую, что столкновение произошло.

using UnityEngine; // Создаем спрайт коробки, который падает и ударяется о спрайт пола. Коробку можно перемещать/анимировать // с помощью клавиш вверх, влево, вправо и вниз. Переместите спрайт коробки вверх и дайте ему // падение увеличит количество вызовов из OnCollisionEnter2D. public class Example1 : MonoBehaviour { public Texture2D tex; void Awake() { SpriteRenderer sr = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer; transform.position = new Vector3(0.0f, 2.5f, 0.0f); Sprite sp = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f); sr.sprite = sp; gameObject.AddComponent<BoxCollider2D>(); Rigidbody2D rb = gameObject.AddComponent<Rigidbody2D>(); rb.bodyType = RigidbodyType2D.Dynamic; } void FixedUpdate() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); gameObject.transform.Translate(moveHorizontal * 0.05f, moveVertical * 0.25f, 0.0f); } // вызывается, когда куб падает на пол void OnCollisionEnter2D(Collision2D col) { Debug.Log("OnCollisionEnter2D"); } }

Example2. This creates the floor.

using UnityEngine; public class Example2 : MonoBehaviour { public Texture2D tex; void Awake() { SpriteRenderer sr = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer; transform.position = new Vector3(0.0f, -2.0f, 0.0f); Sprite sp = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f); sr.sprite = sp; gameObject.AddComponent<BoxCollider2D>(); } }

Эти два объекта хранятся как GameObjects, каждый с одним из сценариев. Эти игровые объекты начинаются только с примера сценария, который им нужен. Example1 применяется к GameObject1, а Example2 — к GameObject2.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3