// 未來會更新此程式碼
using UnityEngine;
using System.Collections;
public class MyCamera : MonoBehaviour {
public Transform target;
GameObject target2;
float moveY;
void Awake(){
target2 = new GameObject ("target2");
transform.parent = target2.transform;
target2.transform.position = target.position;
}
void Update(){
if(Input.touchCount == 1){
MoveControl ();
}else if(Input.touchCount == 2){
ScaleControl ();
}else{
swX = false;
swY = false;
sw2 = false;
}
transform.LookAt (target);
}
float tempX, tempY;
bool swX = false, swY = false;
void MoveControl(){
Vector2 posi = Input.GetTouch (0).position;
float x = posi.x;
float y = posi.y;
float moveX = x - tempX;
moveY = y - tempY;
if(swX){
target2.transform.eulerAngles = new Vector3(target2.transform.eulerAngles.x, target2.transform.eulerAngles.y + (moveX/5), target2.transform.eulerAngles.z);
}
if(swY){
target2.transform.eulerAngles = new Vector3(ClampAngle(target2.transform.eulerAngles.x - (moveY/5), 1, 80), target2.transform.eulerAngles.y, target2.transform.eulerAngles.z);
}
swX = true;
swY = true;
tempX = x;
tempY = y;
}
float temp;
bool sw2 = false;
Vector3 tempPosition;
void ScaleControl(){
float temp2 = Vector2.Distance (Input.GetTouch (0).position, Input.GetTouch (1).position);
float cameraScale = temp2 - temp;
temp = temp2;
if(sw2){
if(Vector3.Distance(transform.position, target.position) > 10){
transform.position = Vector3.MoveTowards (transform.position, target.position, cameraScale * Time.deltaTime / 2);
tempPosition = transform.position;
}else{
transform.position = tempPosition* 1.5f;
}
}
sw2 = true;
}
float ClampAngle(float angle, float min, float max)
{
if (angle < -360)
angle += 360;
if (angle > 360)
angle -= 360;
return Mathf.Clamp(angle, min, max);
}
}
留言列表