まずは画面をつついた場所を向く
考え方としてはCameraTargetというオブジェクトがあって、メインカメラは常にそれを見ている。
カメラを動かすのではなくてCameraTargetを動かしてグリグリする、というイメージ。
private function initValue(){
MainCamera =
GameObject.Find("MainCamera").GetComponent(Camera);
CameraTargetPos =
GameObject.Find("CameraTarget").transform.localPosition;
CameraTargetPos.x = 0.0f;
CameraTargetPos.y = 1.0f;
CameraTargetPos.z = 0.0f;
}
function Update(){
MainCamera.transform.rotation = Quaternion.Slerp(MainCamera.transform.rotation,
Quaternion.LookRotation(Vector3(CameraTargetPos.x, CameraTargetPos.y,
CameraTargetPos.z) - MainCamera.transform.position), 0.1f);
if (Input.GetMouseButton(0)){
MousePos = Input.mousePosition;
MousePos.z = -10.0f;
CameraTargetPos.x = MainCamera.ScreenToWorldPoint(MousePos).x *
-1.0;
if(CameraTargetPos.x <= -5.0f) CameraTargetPos.x = -5.0f;
if(CameraTargetPos.x >= 5.0f) CameraTargetPos.x = 5.0f;
}
}
スワイプ開始時のX位置とスワイプ終了時のX位置からどっちの方向にスワイプされたか検出可能。
このサンプルではやってないけど絶対値でスワイプ量を算出できるからカメラをずいっと動かすこともできそう。
var SwipeStartPos : float = 0.0;
var SwipeEndPos : float = 0.0;
var CameraTargetPos : Vector3;
private var MainCamera : Camera;
MainCamera = GameObject.Find("MainCamera").GetComponent(Camera);
var MousePos : Vector3;
MainCamera.transform.rotation = Quaternion.Slerp(MainCamera.transform.rotation,
Quaternion.LookRotation(Vector3(CameraTargetPos.x, CameraTargetPos.y,
CameraTargetPos.z) - MainCamera.transform.position), 0.1f);
if (Input.GetMouseButtonDown(0)){
MousePos = Input.mousePosition;
MousePos.z = -10.0f;
SwipeStartPos = MainCamera.ScreenToWorldPoint(MousePos).x;
}
if (Input.GetMouseButtonUp(0)){
MousePos = Input.mousePosition;
MousePos.z = -10.0f;
SwipeEndPos = MainCamera.ScreenToWorldPoint(MousePos).x;
if (SwipeStartPos > SwipeEndPos){
CameraTargetPos.x -= 3.0f;
}else if (SwipeStartPos < SwipeEndPos) {
CameraTargetPos.x += 3.0f;
}
SwipeStartPos = 0;
SwipeEndPos = 0;
}
サブカメラ等で画面はめ込みを使う場合
CameraプロパティのViewport Rectを調整する。
x:0 y:0.25
w:1.0 h:0.5
x:0 y:0.25
w:0.5 h:0.5
x:0.25 y:0.25
w:0.5 h:0.5
x:0.5 y:0.25
w:0.5 h:0.5