void Update()
    {
        if (!Input.GetMouseButtonDown(0))
        {
            return;
        }

        var results  = new CubismRaycastHit[4];
        var ray      = Camera.main.ScreenPointToRay(Input.mousePosition);
        var hitCount = raycaster.Raycast(ray, results);

        for (int i = 0; i < hitCount; i++)
        {
            string hitID = results[i].Drawable.name;
            Debug.Log("クリックしたアートメッシュIDは" + hitID + "です。");

            if (hitID == "HitAreaBody")
            {
                anim.SetTrigger("touchBody");
            }

            if (hitID == "HitAreaHead")
            {
                anim.SetTrigger("touchHead");
            }
        }
    }
    private void Update()
    {
        // Return early in case of no user interaction.
        if (!Input.GetMouseButtonDown(0))
        {
            return;
        }


        var raycaster = GetComponent <CubismRaycaster>();
        // Get up to 4 results of collision detection.
        var results = new CubismRaycastHit[4];


        // Cast ray from pointer position.
        var ray      = Camera.main.ScreenPointToRay(Input.mousePosition);
        var hitCount = raycaster.Raycast(ray, results);


        // Show results.
        var resultsText = hitCount.ToString();

        for (var i = 0; i < hitCount; i++)
        {
            resultsText += "\n" + results[i].Drawable.name;
            PlayAnimation(results[i].Drawable.name);                                    // 追加
        }


        Debug.Log(resultsText);
    }
Beispiel #3
0
        protected override void Raycast(Ray ray)
        {
            var hit = new CubismRaycastHit[4];

            var hitCount = raycaster.Raycast(ray, hit);

            for (var index = 0; index < hitCount; index++)
            {
                if (onRaycastHit != null)
                {
                    onRaycastHit.OnNext(hit[index].Drawable);
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// 当たり判定
        /// </summary>
        void HitTest()
        {
            //当たり判定 4点まで許容
            var results = new CubismRaycastHit[4];

            //マウスポジションレイ取得
            var ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            //当たり判定チェック
            var hitCount = this.RayCaster.Raycast(ray, results);

            //あたってなければ抜ける
            if (hitCount < 1)
            {
                return;
            }

            //当たり判定結果
            int hitTestResult = 0;

            //判定結果を走査
            foreach (CubismRaycastHit result in results)
            {
                if (result.Drawable == null)
                {
                    continue;
                }

                if (result.Drawable.name == "D_REF_OPPAI")
                {
                    hitTestResult = 2;
                    break;
                }
                else if (result.Drawable.name == "D_REF_BODY")
                {
                    hitTestResult = 3;
                    //体は優先度低。続行
                    continue;
                }
                else if (result.Drawable.name == "D_REF_HEAD")
                {
                    hitTestResult = 1;
                    break;
                }
            }

            if (hitTestResult == 1)
            {
                //次の話題
                CallbackOnNextTalkOrSkip();
            }
            else if (hitTestResult == 2)
            {
                //恥じらいを発動
                 SetExpressionLocal(MOTION.MOTION_PROUD_M);
            }
            else if (hitTestResult == 3)
            {
                //次の話題
                CallbackOnNextTalkOrSkip();
            }
        }