Unity 6.3
0 онлайн 76 гостей 3 в системе
Вход

MonoBehaviour.OnParticleCollision(GameObject)

Описание

OnParticleCollision вызывается, когда частица попадает в Collider.

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

Это сообщение отправляется в скрипты, прикрепленные к системам частиц и к Collider который был убит.

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

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

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

OnParticleCollision может быть короутин.

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++; } } }