// 未來會更新此程式碼

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);
}

}

arrow
arrow
    全站熱搜

    黃彥霖 發表在 痞客邦 留言(0) 人氣()