Синтаксис:
Используется javascript
var target : Transform;
var distance = 10.0;
var maxdistance = 10.0;
var mindistance = 10.0;
private var xSpeed = 950.0;
private var ySpeed = 950.0;
private var x = 0.0;
private var y = 0.0;
private var currentX = 0.0;
private var currentY = 0.0;
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
}
function LateUpdate () {
if (target) {
//Pinch Gesture
if (Input.touchCount >= 2){
var touch0 = Input.GetTouch(0);
var touch1 = Input.GetTouch(1);
var curDist = touch0.position - touch1.position;
var prevDist = (touch0.position - touch0.deltaPosition) - (touch1.position - touch1.deltaPosition);
var delta = (curDist.magnitude - prevDist.magnitude)/10;
distance -= delta;
if(distance>maxdistance)
distance=maxdistance;
if(distance<mindistance)
distance=mindistance;
//Pan Gesture
} else if (Input.touchCount == 1){
//Touch Moved
if (Input.GetTouch(0).phase==TouchPhase.Moved){
var xDelta = (Input.touches[0].deltaPosition.x * xSpeed * Time.deltaTime)/100;
var yDelta = (Input.touches[0].deltaPosition.y * ySpeed * Time.deltaTime)/100;
x += xDelta;
y -= yDelta;
}
}
//Update View
var rotation = Quaternion.Euler(y, x, 0);
var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
transform.rotation = rotation;
transform.position = position;
}
}
var distance = 10.0;
var maxdistance = 10.0;
var mindistance = 10.0;
private var xSpeed = 950.0;
private var ySpeed = 950.0;
private var x = 0.0;
private var y = 0.0;
private var currentX = 0.0;
private var currentY = 0.0;
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
}
function LateUpdate () {
if (target) {
//Pinch Gesture
if (Input.touchCount >= 2){
var touch0 = Input.GetTouch(0);
var touch1 = Input.GetTouch(1);
var curDist = touch0.position - touch1.position;
var prevDist = (touch0.position - touch0.deltaPosition) - (touch1.position - touch1.deltaPosition);
var delta = (curDist.magnitude - prevDist.magnitude)/10;
distance -= delta;
if(distance>maxdistance)
distance=maxdistance;
if(distance<mindistance)
distance=mindistance;
//Pan Gesture
} else if (Input.touchCount == 1){
//Touch Moved
if (Input.GetTouch(0).phase==TouchPhase.Moved){
var xDelta = (Input.touches[0].deltaPosition.x * xSpeed * Time.deltaTime)/100;
var yDelta = (Input.touches[0].deltaPosition.y * ySpeed * Time.deltaTime)/100;
x += xDelta;
y -= yDelta;
}
}
//Update View
var rotation = Quaternion.Euler(y, x, 0);
var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
transform.rotation = rotation;
transform.position = position;
}
}
А теперь проблема,у меня есть несколько объектов и величина их разная. При переключении например с объекта с маленькой величиной на большой,камера оказывается внутри объекта (т.е. по сути сохраняет дистанцию с прошлого объекта). А условие:
Синтаксис:
Используется javascript
if(distance>maxdistance)
distance=maxdistance;
if(distance<mindistance)
distance=mindistance;
distance=maxdistance;
if(distance<mindistance)
distance=mindistance;
работает только когда юзер прикасается к экрану,и тогда камера ставится на нужную позицию и объект виден,а нужно чтобы при переключении дистанция выставлялась сразу.