Hello guys! well I have been trying to figure this out for quite some time but for some reason I can´t get it working…
This is the thing I have already a mouse Orbit Script from someone at Unity Forums (can´t remember who) it works perfectly! and I want to do the same one for the iphone but it must work with finger swipes (I already added some code to detect them). Can you guys help me with the RotateAround part?
Any ideas?
Here is the mouse Orbit code, it is pretty simple:
var target : Transform;
var distance = 10.0;
var cameraSpeed = 5;
var xSpeed = 175.0;
var ySpeed = 75.0;
var yMinLimit = 30; //Lowest vertical angle in respect with the target.
var yMaxLimit = 80;
var minDistance = 5; //Min distance of the camera from the target
var maxDistance = 20;
private var x = 0.0;
private var y = 0.0;
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
}
function LateUpdate () {
if (target && camera) {
//Zooming with mouse
distance += Input.GetAxis("Mouse ScrollWheel")*distance;
distance = Mathf.Clamp(distance, minDistance, maxDistance);
//Detect mouse drag--> PC input;
if(Input.GetMouseButton(0)) {
x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
}//Left
y = ClampAngle(y, yMinLimit, yMaxLimit);
var rotation = Quaternion.Euler(y, x, 0);
var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
transform.position = Vector3.Lerp (transform.position, position, cameraSpeed*Time.deltaTime);
transform.rotation = rotation;
}
//Detect swipes--> iPhone Input
for (var evt: iPhoneTouch in iPhoneInput.touches){
if(evt.phase == iPhoneTouchPhase.Moved ){
//Here is where I need to do the exact same thing that was done with the mouse;
}
}
}
static function ClampAngle (angle : float, min : float, max : float) {
if (angle < -360)
angle += 360;
if (angle > 360)
angle -= 360;
return Mathf.Clamp (angle, min, max);
}