- Home /
Why is the code not called?
Hiya. I am doing my first ever unity-project, and I find it excruciatingly much more trouble than Visual Studio or Flash ever was. Enough about that, forward to the problem at hand.
My FPS character that I made myself because the built in one did not suit my purpose walks into a cylinder. This cylinder is in fact a portal. I do not ask for being able to see through it, I just want to transport. Right now, I am happy if ANYTHING can get through it.
I attached the following code to the portal.
function OnTriggerEnter (other : Collider) {
Debug.Log("Somethin'");
if (other.CompareTag ("Player")) {
other.transform.position = Vector3(0,0,0);
}
}
And quite plainly, it does not do anything. I can stand on the portal, I can blast it, I can jump into it, but I do not arrive at position 0, 0, 0. It does not even write "Somethin'". The code is clearly not called upon.
Many of you probably silently thought about how stupid and easy a mistake I have made. Please tell me what it is.
Thank you. Sincerely, PlatinumSkink
Thank you very much. I had somehow (./) managed to not figure out that I must click on a box in the inspector view to make a certain code work. You have saved me from many hours of frustration.
I had not clicked the "Is Trigger" box, and I had not even registered that it existed. One less detail I will never have a problem with again, at least.
Thank you, Bob, for pointing this out to me. Thank you, Derek, for pointing out another fact that I was not aware of. I will now continue on my path of failing codes, and will probably return in a few moments.
Thank you. Sincerely, PlatinumSkink.
Answer by PrimeDerektive · Jan 03, 2011 at 04:23 PM
Does your FPS character have a Rigidbody or a CharacterController component? Without either of those, OnTriggerEnter can never fire.
Also, make sure the thing that you are colliding with isn't just a collider, but a "trigger." There is a "is trigger?" checkbox on the collider that needs to be checked, or the onTriggerEnter code will never be called. Alternatively, just change the code to OnCollisionEnter and see if it works.
It has a Rigidbody, though not a CharacterController. I found I did not need it for my purposes, and in fact, as my controller is now adding a CharacterController would create complete chaos and errors everywhere. I hope a Rigidbody is sufficient.
Yeah, a rigidbody should be fine. As bob said, do you have "is Trigger" set to true on the collider component of the transporter thing?
Answer by Statement · Jan 03, 2011 at 04:40 PM
- It could be that you have not the script on the same object that has your collider, on the portal.
- Or your player might lack a collider.
- Or your players collider is a trigger.
- Or your collision masks could be wrong.
If you create a box or something and attach a rigid body to it and let it fall into the portal, does it trigger the "Somethin'" message? If it does, then it sounds likely that either:
- Your player have no collider.
- Your player have inappropriate collision masks.
If it doesn't register the message even with the rigidbody, then your object might not have the script and trigger attached on the same object.
I have answered a similar question that might add more insight. I felt this was related so I crosspost.
Wow. Thank you. I may have already solved the problem from reading what Bob wrote, but you offered me an alternative way of solving the entire teleporting issue. $$anonymous$$y game is pretty teleporter heavy, so this may come of great help. Thank you.
Your answer
Follow this Question
Related Questions
Help with a simple function. 1 Answer
What is the code for detecting a collision? 1 Answer
Collision.point not working 1 Answer
Realistic Hands and Physics implementation? 1 Answer
Anti-Gravity vehicle bounce-back? 1 Answer