- Home /
OnTriggerEnter requiring both to be rigidbodies ?
I've been reading that for OnTriggerEnter you only need one of the gameObjects to be a rigidbody.
Now that worked just fine for my Tower to detect my Enemy. But when my Tower shoots at the Enemy, the bullet trigger does not work unless I also add a rigidbody to it.
Why is that? The enemy cube is already a rigidbody, why won't OnTriggerEnter work for the bullet unless both the bullet and the enemy cube are rigidbodies?
Is there a better way to do it? Am I doing it the wrong way?
I hope this isn't a bad way to ask a question, I would just like to understand how things work. Thanks in advance for any help
Edit: Posting code as requested, they both already have tags
//enemy
function OnTriggerEnter( other : Collider ) {
if(other.gameObject.tag == "Bullet") {
Destroy(other.gameObject);
}
}
//bullet
function OnTriggerEnter( other : Collider ) {
if(other.gameObject.tag == "Enemy") {
Destroy(gameObject);
}
}
Post the code that is relevant here as there might be a problem with it. And try adding a tag to your enemy and make sure that when the collision happens between the two game objects that the tag is found.
Answer by aldonaletto · Sep 29, 2013 at 08:55 PM
This rule is valid when the trigger is static and other colliders hit it; if the trigger moves and hits other colliders, it must have its own rigidbody - preferably a kinematic rigidbody, since apparently you're moving the bullet via Translate.
Aw I can't upvote you till I have 15 rep. Anyway this makes sense now, thank you so much for explaining it, I knew it had to be something simple. I love you! Is there something wrong with moving the bullet via Translate btw?
Usually the bullet is a regular (non-kinematic) rigidbody, and you just launch it with AddForce or by directly setting its velocity - in this case, the event OnCollisionEnter must be used to detect when the bullet hits something. Take a look at this question to see an example of how to launch a rigidbody bullet.
The rigidbody bullet is easier because you just have to launch it - the physics does the rest. $$anonymous$$oving the bullet yourself via Translate may be better when you want some special behaviour, like a ho$$anonymous$$g bomb.
Your answer
![](https://koobas.hobune.stream/wayback/20220613115028im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
How to tilt the gameobject based of Input.Acceleration? 0 Answers
How can I make a character bounce? 1 Answer
Problem with array on gameobjects 2 Answers
if moving statement 1 Answer