Leap MotionでMMDモデルに触れたことを検出する

前回の記事oki-lab.hatenablog.jp

Leap Motionを使ってMMDモデルに触れるようになりましたので、次はモデルに触れたことを検出できるようにしてみます。 f:id:oki-lab:20160228151446p:plain

まずは、下記のスクリプトを用意します。

using UnityEngine;
using System.Collections;

public class ModelTrigger: MonoBehaviour {
    private GameObject controller = null;
    private string[] touchInfo=new  string[3];

    // Use this for initialization
    void Start () {
        controller = GameObject.Find("TriggerController");
    }
    
    // Update is called once per frame
    void Update () {
    
    }

    void OnTriggerEnter(Collider other){
        touchInfo[0]=transform.root.gameObject.name;
        touchInfo[1]=transform.parent.gameObject.name;
        touchInfo[2]=other.gameObject.name;
        controller.SendMessage("Touch",touchInfo);
    }

    void OnTriggerExit(Collider other) {
        //Debug.Log(other.gameObject);
    }
}


using UnityEngine;
using System.Collections;

public class TriggerController : MonoBehaviour {

    // Use this for initialization
    void Start () {

    }
    
    // Update is called once per frame
    void Update () {
    
    }

    void Touch(string[] touchInfo){
        Debug.Log(touchInfo[0]+","+touchInfo[1]+","+touchInfo[2]);
    }

}

次に、triggerControllerをLeap Motionの手のモデルのBoneにアタッチし、そのモデルのPrefabをHandControllerにアタッチし直します。

f:id:oki-lab:20160228150618p:plain

最後に、空のGameObjectを作成し、ModelTriggerのスクリプトをアタッチすれば完了です。

f:id:oki-lab:20160228151348p:plain

上のスクリプトでは、左右どちらの手のどの指がどのオブジェクトに触れたのかを、コンソール上に表示するようにしています。 これを応用すれば、特定の部位に触れた時に、所定のリアクションをさせることも出来ると思います。


Unity5入門 最新開発環境による簡単3D&2Dゲーム制作