- Home /
Collision detection in script not attached to either collider
I have a GameObject that holds all of the scripts that run my scene. I want to detect when a collision has occurred between two objects, but I want the collision to trigger events in a script contained by my script GameObject, which is itself not involved in the collision. As far as I understand, the OnCollisionEnter and OnTriggerEnter functions will only be called in scripts attached to a GameObject that is taking part in a collision. Thus I can't figure out how to impact variables owned by a script in another GameObject that isn't involved in the collision.
Answer by ZSramek · May 21, 2015 at 09:17 AM
I figured out a way to do it. I took the object acting as the trigger and wrote a simple script using OnTriggerEnter() to detect collisions between itself and other objects. Then I declared my Scripts GameObject as a public variable and added it in the Editor. After that I declared a variable to hold the particular script I wanted to access and accessed it using gameObject.GetComponent(). With that I was able to change a boolean in my script attached to the Scripts object in the script attached to the collider. Here is the script attached to the trigger collider:
//Using UnityScript
#pragma strict
//The gameobject that holds the scripts
public var scripts : GameObject;
//The particular script I want to access the variable in.
private var actionScript : ActionScript;
function Start ()
{
actionScript = scripts.GetComponent("ActionScript");
actionScript.collision = false; //ActionScript contains a boolean named "collision"
}
function Update () {}
function OnTriggerEnter(collider : Collider)
{
if (collider.gameObject.tag == "MyTag")
{
Debug.Log("Collision Detected!");
actionScript.collision = true;
}
}
Your answer
Follow this Question
Related Questions
Can you help me about collision please ? 3 Answers
Destroying object when player walks over it 1 Answer
Unwanted jittery behavior 2 Answers
Colliders in a wall jut out 0 Answers
Trigger Spawning? 1 Answer