- Home /
I have a question about the hit variable (C#)
I have the book Unity 3.x game development essentials by Will Goldstone, and in it we're creating an island, as I'm sure some of you already know. In particular, the author asks us to create a script to interact with an "outpost" gameobject that the character controller collides with and an animation ensues. What stumbles me is this:
void OnControllerColliderHit (ControllerColliderHit hit) { if (hit.gameObject.tag == "playerDoor" && doorIsOpen == false) { OpenDoor (hit.gameObject); } }
The author explains the hit variable this way, "We have utilized the dot syntax to address the object that we are checking for collisions with by narrowing down from hit (our variable storing information on collisions) to gameObject (the object hit) to the tag on that object."
I guess i'm still at a loss of understanding it, but the hit variable occurs in the argument of the OnControllerColliderHit function, as well as the OpenDoor function. What does it mean, and why should it be there? I guess i'm just looking for a different explanation, thanks to anyone that can aid!
Answer by robertbu · Mar 23, 2013 at 01:24 AM
You get a OnControllerColliderHit() call when you have a collision using character controller. There may be many objects in the scene that could have produced the hit. The hit parameter tells you information about the specific object that was hit. If you take a look at the reference page for the 'ControllerColliderHit' class, you will see that it contains a bundle of different information. The dot notation allows you to access a specific piece of the bundle. For example 'hit.point' gives the point in world space where the collision occurred. 'hit.moveLength' indicates how far the controller moved before the hit occurred.
Awesome, upon numerous attempts at rereading everything, and going off your answer, I'm beginning to understand a bit more about it. Thank you so much for your answer!