Live2Dに関するユーザーのみなさま同士の交流・ご質問・不具合の報告・提案・要望などについて是非お寄せください。
※Live2D公式スタッフからの発言や回答については確約できないことを予めご了承ください。
Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル

【質問】当たり判定の沢山あるものを作りたい

Unity SampleApp1を元に当たり判定を複数追加、それらにモーションを割り当てたいのですが
具体的に、どこをいじると良いのでしょうか?

最初はmodel.json内をいじると良いのかな?と新しいhit_areasやtap_ を書き足したり
LAppDefine LAppMode内などもいじるのかな?とそれっぽい個所をコピペーしてbody2みたいに書き直したり
SampleApp1と色々にらめっこしていたのですが、プログラムとかあまり理解できてないのでこんがらがるだけでした(^^;

image

コメント

  • tailtalesさん

    一番シンプルな方法だと以下のやり方でできます。
    1)モデルの当たり判定を増やす

    2)model.jsonの当たり判定を増やす
    "hit_areas":
    [
        {"name":"head0", "id":"D_REF.HEAD0"},
        {"name":"head1", "id":"D_REF.HEAD1"},
        {"name":"body", "id":"D_REF.BODY"}
    ],
    
    3)LAppDefine.csの当たり判定の定義を増やす
    	// 外部定義ファイル(json)と合わせる
    //	public const string HIT_AREA_HEAD		    ="head";
        public const string HIT_AREA_HEAD0               ="head0";
        public const string HIT_AREA_HEAD1               ="head1";
        public const string HIT_AREA_BODY		    ="body";
    
    4)LAppModel.csの修正
    public void FlickEvent(float x, float y)
    {
        if (LAppDefine.DEBUG_LOG) Debug.Log("flick x:" + x + " y:" + y);
    
    //        if (HitTest(LAppDefine.HIT_AREA_HEAD, x, y))
        if (HitTest(LAppDefine.HIT_AREA_HEAD0, x, y))
        {
            if (LAppDefine.DEBUG_LOG) Debug.Log("Flick face");
            StartRandomMotion(LAppDefine.MOTION_GROUP_FLICK_HEAD, LAppDefine.PRIORITY_NORMAL);
        }
        if (HitTest(LAppDefine.HIT_AREA_HEAD1, x, y))
        {
            if (LAppDefine.DEBUG_LOG) Debug.Log("Flick face");
            StartRandomMotion(LAppDefine.MOTION_GROUP_FLICK_HEAD, LAppDefine.PRIORITY_NORMAL);
        }
    }
    
    public bool TapEvent(float x, float y)
    {
        if (LAppDefine.DEBUG_LOG) Debug.Log("tapEvent view x:" + x + " y:" + y);
    
    //        if (HitTest(LAppDefine.HIT_AREA_HEAD, x, y))
        if (HitTest(LAppDefine.HIT_AREA_HEAD0, x, y))
        {
            // 顔をタップしたら表情切り替え
            if (LAppDefine.DEBUG_LOG) Debug.Log("Tapped face");
            SetRandomExpression();
        }
        else if (HitTest(LAppDefine.HIT_AREA_HEAD1, x, y))
        {
            // 顔をタップしたら表情切り替え
            if (LAppDefine.DEBUG_LOG) Debug.Log("Tapped face");
            SetRandomExpression();
        }
    
    StartRandomMotionの引数1は、再生するモーションを指します。
    model.jsonの"flick_head"で再生するモーション名を設定すれば、指定のモーションが再生できるかと思います。
  • ありがとうございます。確認しながら一つ一つやってみます。
コメントするにはサインインまたは登録して下さい。