top of page

オブジェクトがタッチされたら

※Rigidbodyを必ず付けること


    void Start () {
        GetComponent<Rigidbody>().isKinematic = true;
    }
    
    void Update () {
        if(OnTouchDown()){
            //タッチされた
        }
    }

    //スマホ向け そのオブジェクトがタッチされていたらtrue(マルチタップ対応)
    bool OnTouchDown() {
        // タッチされているとき
        if( 0 < Input.touchCount){
            // タッチされている指の数だけ処理
            for(int i = 0; i < Input.touchCount; i++){
                // タッチ情報をコピー
                Touch t = Input.GetTouch(i);
                // タッチしたときかどうか
                if(t.phase == TouchPhase.Began ){
                    //タッチした位置からRayを飛ばす
                    Ray ray = Camera.main.ScreenPointToRay(t.position);
                    RaycastHit hit = new RaycastHit();
                    if (Physics.Raycast(ray, out hit)){
                        //Rayを飛ばしてあたったオブジェクトが自分自身だったら
                        if (hit.collider.gameObject == this.gameObject){
                            return true;
                        }
                    }
                }
            }
        }
        return false; //タッチされてなかったらfalse
    }

bottom of page