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となります
登録:
コメントの投稿 (Atom)
0 コメント:
コメントを投稿