54 lines
1.8 KiB
C#
54 lines
1.8 KiB
C#
/*
|
|
* @author Valentin Simonov / http://va.lent.in/
|
|
*/
|
|
|
|
using UnityEngine;
|
|
using TouchScript.Gestures.TransformGestures;
|
|
|
|
namespace TouchScript.Examples.CameraControl
|
|
{
|
|
/// <exclude />
|
|
public class CameraController : MonoBehaviour
|
|
{
|
|
public ScreenTransformGesture TwoFingerMoveGesture;
|
|
public ScreenTransformGesture ManipulationGesture;
|
|
public float PanSpeed = 200f;
|
|
public float RotationSpeed = 200f;
|
|
public float ZoomSpeed = 10f;
|
|
|
|
private Transform pivot;
|
|
private Transform cam;
|
|
|
|
private void Awake()
|
|
{
|
|
pivot = transform.Find("Pivot");
|
|
cam = transform.Find("Pivot/Camera");
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
TwoFingerMoveGesture.Transformed += twoFingerTransformHandler;
|
|
ManipulationGesture.Transformed += manipulationTransformedHandler;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
TwoFingerMoveGesture.Transformed -= twoFingerTransformHandler;
|
|
ManipulationGesture.Transformed -= manipulationTransformedHandler;
|
|
}
|
|
|
|
private void manipulationTransformedHandler(object sender, System.EventArgs e)
|
|
{
|
|
var rotation = Quaternion.Euler(ManipulationGesture.DeltaPosition.y/Screen.height*RotationSpeed,
|
|
-ManipulationGesture.DeltaPosition.x/Screen.width*RotationSpeed,
|
|
ManipulationGesture.DeltaRotation);
|
|
pivot.localRotation *= rotation;
|
|
cam.transform.localPosition += Vector3.forward*(ManipulationGesture.DeltaScale - 1f)*ZoomSpeed;
|
|
}
|
|
|
|
private void twoFingerTransformHandler(object sender, System.EventArgs e)
|
|
{
|
|
pivot.localPosition += pivot.rotation*TwoFingerMoveGesture.DeltaPosition*PanSpeed;
|
|
}
|
|
}
|
|
} |