- Home /
Check every frame if Collider touch each other
Hi, tried at least for hours solving this ;(
// Update is called once per frame
void Update () {
currentCollider = GameObject.Find ("line1").GetComponent<Collider2D> ();
testCollider = GameObject.Find ("line2").GetComponent<Collider2D> ();
if (currentCollider.isTouching (testCollider)) {
Debug.Log("hoorayItWorks");
}
i want to check every frame if one Collider touches another. line 1 and 2 both inherit rigidbody2D and BoxCollider2D. Using Unity Version 4.6. my: ...[.isTouching()]- is painted in red in Monodevelopment. any ideas ? thx
.... Use Triggerevents is no choice,.... because it doesn't trigger the time i place object with lines between themd randomly on a Screen (and lines were drawnin an instant, so it doens trigger the onExit or onEnter).
You should use the functions from the Collider2D : http://docs.unity3d.com/ScriptReference/Collider2D.html
You have three functions perfectly designed for that : - OnCollisionEnter2D (Will notify you if something enter in your collider2D, you have to check the type of this object) - OnCollisionExit2D (Will notify you if something exit in your collider2D, you have to check the type of this object) - OnCollisionStay2D (Will notify you if something is still in your Collider2D)
The remaining test inside your function is up to you ;)
But they like this generally :
void OnCollisionEnter2D(Collision2D coll) {
if (coll.gameObject.tag == "Enemy")
coll.gameObject.Send$$anonymous$$essage("ApplyDamage", 10);
}
First: Don't use GameObject.Find() and GameObject.GetComponent() every frame: that can have significant impact on performance. Better get references you need in a Start() and store them.
Second: Physics works separetly from graphics, so use FixedUpdate() ins$$anonymous$$d Update().
Collider2D coll1;
Collider2D coll2;
void Start()
{
coll1 = GameObject.Find ("line1").GetComponent<Collider2D> ();
coll2 = GameObject.Find ("line2").GetComponent<Collider2D> ();
}
void FixedUpdate ()
{
if (coll1.isTouching (coll2))
Debug.Log("hoorayItWorks");
}
Your answer
Follow this Question
Related Questions
Collision detection when objects already touch at runtime 1 Answer
Check if colliding with a layer 2 Answers
Collision not being detected? 1 Answer
Making an object collide but transparent 0 Answers