Pages

2012年7月8日日曜日

オブジェクトがタップされたかを判定する


タップされた位置に3Dオブジェクトがあるかどうかなど。タップで動きを変えるときなどに使用します。

以下を含むスクリプトを判定したいオブジェクトのコンポーネントに付加します。
ざっくり言うと、タップされた位置から画面奥に、レイと呼ばれる光線をカメラが飛ばします。一番最初に光線が当たった場合に、その情報を取得できます。

Ray ray ;//光線
RaycastHit hit ;//光線が当たったときの情報が入ります
Camera myCamera;//カメラを指定します。

void Update(){

if(Input.touchCount == 1) {//タップあり時にtrue
       Touch touch = Input.touches[0];
          ray = myCamera.ScreenPointToRay(Input.touches[0].position);

       if(touch.phase == TouchPhase.Ended && Physics.Raycast(ray.origin,ray.direction,out hit,Mathf.Infinity)){


if(hit.collider==gameObject.collider){

//タップされた位置にオブジェクトがあった場合の処理。


   }

  }else if (touch.phase == TouchPhase.Ended && !Physics.Raycast(ray.origin, ray.direction,out hit,Mathf.Infinity)) {


//光線に当たるオブジェクトが何一つ無いとき

  }
}

myCamera.ScreenPointToRay(Input.touches[0].position);で光線をとばします。
ここではタップのあった場所を渡し、始点としています。


touch.phaseでタップのどの時点かを指定します。
ここではTouchPhase.Endedで指が離れた時にtrueとなります。
Physics.Raycastは何かのオブジェクトが当たったときにtrueとなります

0 コメント:

コメントを投稿