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

MonoBehaviour.OnParticleCollision(GameObject)

Описание

OnParticleCollision вызывается, когда частица сталкивается с коллайдером.

Это можно использовать для нанесения урона игровому объекту при попадании частиц. Это сообщение отправляется сценариям, прикрепленным к системам частиц, и к коллайдеру, по которому произошло столкновение.

Когда OnParticleCollision вызывается из сценария, прикрепленного к GameObject с помощью Collider, параметр GameObject представляет ParticleSystem. Коллайдер получает не более одного сообщения на каждую Систему частиц, которая столкнулась с ним в любом заданном кадре, даже когда Система частиц столкнулась с Коллайдером. с несколькими частицами в текущем кадре. Чтобы получить подробную информацию обо всех коллизиях, вызванных ParticleSystem, необходимо использовать ParticlePhysicsExtensions.GetCollisionEvents для извлечения массива. ParticleSystem.CollisionEvent.

Когда OnParticleCollision вызывается из скрипта, прикрепленного к ParticleSystem, параметр GameObject представляет GameObject с прикрепленным коллайдером, пораженным < a href="ParticleSystem">ParticleSystem. ParticleSystem получает не более одного сообщения на каждый коллайдер, в который попал. Как и выше, ParticlePhysicsExtensions.GetCollisionEvents необходимо использовать для получения всех инцидентов столкновений с GameObject.

Сообщения отправляются только в том случае, если вы включили Send Collision Messages в Инспекторе модуля Particle System Collision.

OnParticleCollision может быть сопрограммой. Просто используйте оператор yield в функции.

using UnityEngine; using System.Collections; using System.Collections.Generic; public class ExampleClass : MonoBehaviour { public ParticleSystem part; public List<ParticleCollisionEvent> collisionEvents; void Start() { part = GetComponent<ParticleSystem>(); collisionEvents = new List<ParticleCollisionEvent>(); } void OnParticleCollision(GameObject other) { int numCollisionEvents = part.GetCollisionEvents(other, collisionEvents); Rigidbody rb = other.GetComponent<Rigidbody>(); int i = 0; while (i < numCollisionEvents) { if (rb) { Vector3 pos = collisionEvents[i].intersection; Vector3 force = collisionEvents[i].velocity * 10; rb.AddForce(force); } i++; } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3