Что используется:
- Стандартный Joystick.js из Standard Assets (Mobile)
- Переделанный MouseOrbit под тач (см. спойлер)
Синтаксис:
Используется javascript
var target : Transform;
var distance = 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;
public var zoom:boolean = true;
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
}
function LateUpdate () {
if (target) {
//Pinch Gesture
if (Input.touchCount >= 2){
if (zoom == true) {
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)/150;
distance -= delta;
if(distance>10.0)
distance=10.0;
if(distance<2)
distance=2;
}
}
//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;
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;
public var zoom:boolean = true;
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
}
function LateUpdate () {
if (target) {
//Pinch Gesture
if (Input.touchCount >= 2){
if (zoom == true) {
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)/150;
distance -= delta;
if(distance>10.0)
distance=10.0;
if(distance<2)
distance=2;
}
}
//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;
}
}
В чем проблема:
1) При использовании джойстика камера вращается вместе с ним,хотя по сути не должна. Как исправить?
2) При Input.touchCount = 2, мне нужно чтобы камера вращалась от "второго пальца",а не от первого.