にほんブログ村 IT技術ブログ IT技術メモへ ブログ村 IT技術ブログへ ブログ村 オヤジ日記へ ブログランキング・にほんブログ村へ

Try Unity _10 UNITYでKINECTを使ってみる Zigfu編②

今日はZigfuで各関節(ボーン)の位置の取得について考えてみたいと思います。

シーンは前回からものを利用することにします。

まず、右手の位置をトレースしてみます。

下記のスクリプト作成し、ヒエラルキービューにあるrighthandオブジェクトに
アタッチします。

   private GameObject righthand;

  void Start () {

   //righthandのオブジェクト(Sphere)を変数に格納
    righthand = GameObject.Find("righthand");

  }
	
  void Update () {

    //フレームごとにrighthandオブジェクトのx座標をコンソールへ出力する
    Debug.Log(righthand.transform.position.x);
   }

再生するとコンソールビューに右手の位置がトレースされると思いますので、
いろいろ右手を動かしてみてください。

今回のスクリプトは、右手だけに限定してたので、righthandにアタッチしましたが、
別にどこでも良いと思います。右手を頭より上にあげれば・・・などを行いたい場合は
MANオブジェクトにアタッチするのがベストでしょうか。

どんな振る舞いを何に与えるか。と、プログラムをすっきりさせるために
アタッチするもの(場所)は良く考えないといけませんね。

というわけで、右手を頭より上にあげればマテリアルを赤色にするというものを作ってみました。

  private GameObject head;
    private GameObject righthand;

    void Start()
    {

        //righthandのオブジェクト(Sphere)を変数に格納
        righthand = GameObject.Find("righthand");

        //headのオブジェクト(Sphere)を変数に格納
        head = GameObject.Find("head");


    }

    void Update()
    {

        if (head.transform.position.y < righthand.transform.position.y)
        {
            //右手が頭よりも上にあれば右手のマテリアルを赤色に。
            righthand.renderer.material.color = Color.red;        
        }
        else
        {
            //右手が頭よりも下にあれば右手のマテリアルを白色に。
            righthand.renderer.material.color = Color.white;
        }
        
    }


赤上げて。ってゆーか上げたら赤。