- Home /
Question by
areFranz · May 10, 2014 at 11:40 AM ·
c#shurikenonparticlecollision
Shuriken OnParticleCollision SendCollisionMessage doesn't work completely
Hi, I have a Shuriken LASER ParticleSystem with the collision and the SendCollisionMessages enabled. So I need to shoot this laser towards asteroids (Rigidbodies) thet every 4 shoots ere destroyed. I found the script for the asteroid in the Unity Documentation, and it works:
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
private ParticleSystem.CollisionEvent[] collisionEvents = new ParticleSystem.CollisionEvent[16];
void OnParticleCollision(GameObject other) {
ParticleSystem particleSystem;
particleSystem = other.GetComponent<ParticleSystem>();
int safeLength = particleSystem.safeCollisionEventSize;
if (collisionEvents.Length < safeLength)
collisionEvents = new ParticleSystem.CollisionEvent[safeLength];
int numCollisionEvents = particleSystem.GetCollisionEvents(gameObject, collisionEvents);
int i = 0;
while (i < numCollisionEvents) {
if (gameObject.rigidbody) {
Vector3 pos = collisionEvents[i].intersection;
Vector3 force = collisionEvents[i].velocity * 10;
gameObject.rigidbody.AddForce(force);
}
i++;
}
}
}
This script adds a force to the asteroids and make them go away in opposite direction... When i change to this:
if (gameObject.rigidbody) {
Debug.Log ("collision");
gameObject.rigidbody.GetComponent<AsteroidsRotation>().ApplyDamage (1);
}
In the console i receive the collision debug (many at one time) but the ApplyDamage Function isn't called...
Is there a simpler way to do what i need? Or somethisng to change in my script?
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220613144711im_/https://answers.unity.com/themes/thub/images/avi.jpg)