Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  I want to create an event when clothes touch a particular object.
#1
I tried using http://obi.virtualmethodstudio.com/tutor...sions.html, but I wanted to find an easier way.

So, I'm trying to contact using obicontacteventdispatcher.

(Enter/Stay/Exit) works satisfactorily and satisfactorily.

But what I want is to operate it when a particular collider touches it.

For example, typically in Unity,

private void OnTriggerEnter(Collider other)
{
          if (other.gameObject.name == "testModel")
          {
               //func();
          }
}

In this way, only objects named "testModel" can be contacted, but I tried many things using obicontacteventdispatcher, but I couldn't. Could you tell me how to contact only certain objects?

Thank you for your quick response.
Reply
#2
In Obi this is done exactly the same way, once you have a reference to the collider involved in the collision, you just check its name (or layer, tag, etc). You can get a reference to the collider from a contact as explained in the manual:

http://obi.virtualmethodstudio.com/tutor...sions.html
Quote:ObiColliderBase collider = ObiColliderWorld.GetInstance().colliderHandles[contact.other].owner;

Putting it all together:

Code:
using UnityEngine;
using Obi;

public class ContactWithNamedObject : MonoBehaviour
{

    public void OnContactEnterProcess(ObiSolver solver, Oni.Contact contact)
    {
        ObiColliderBase other = ObiColliderWorld.GetInstance().colliderHandles[contact.other].owner;
        if (other.gameObject.name == "testModel")
        {
            Debug.Log("Collision!");
        }
    }
}

Then you just have to subscribe the OnContactEnterProcess function to the OnContactEnter event of the dispatcher. You can do this trough the inspector, or programmatically.
Reply
#3
(21-01-2021, 09:09 AM)josemendez Wrote: In Obi this is done exactly the same way, once you have a reference to the collider involved in the collision, you just check its name (or layer, tag, etc). You can get a reference to the collider from a contact as explained in the manual:

http://obi.virtualmethodstudio.com/tutor...sions.html

Putting it all together:

Code:
using UnityEngine;
using Obi;

public class ContactWithNamedObject : MonoBehaviour
{

    public void OnContactEnterProcess(ObiSolver solver, Oni.Contact contact)
    {
        ObiColliderBase other = ObiColliderWorld.GetInstance().colliderHandles[contact.other].owner;
        if (other.gameObject.name == "testModel")
        {
            Debug.Log("Collision!");
        }
    }
}

Then you just have to subscribe the OnContactEnterProcess function to the OnContactEnter event of the dispatcher. You can do this trough the inspector, or programmatically.

Wow... it's applied so perfectly well. Thank you very much!
Reply