- Home /
Question by
EsmeeKhan · Dec 01, 2012 at 12:43 PM ·
rotationquaternions
Rotate a Cube on swipe gesture iOS, for a specific time?
Hi !
I am trying to make a 3D Menu of cube , what I want is to rotate cube on swipe. To see all the sides of cube and select any side by rotating cube in every direction I want I got the swipe gestures working properly by using (Fingure Gesture), I want to rotate cube in the direction of swipe with the swipe velocity , now the problem is when I want to rotate it only for the time till it completes an angle which is respect to the velocity of swipe. So any help please. Cause i have been trying and playing with Quaternions and its really messy .
Here is the code for rotation on swipes: using UnityEngine; using System.Collections;
public class BasicMethodTap : MonoBehaviour {
Vector3 heading;
public float pinchScaleFactor = 0.02f;
bool Pinching;
float fov;
float minFov = 40f;
float maxFov = 100f;
float rotateFrom;
float rotateTo;
float sensitivity= 0.02f;
// variables for cube rotation control
public float rotateSpeed;
public int rotateDirection;
public Quaternion targetRotation;
public bool shouldRotate;
public float angle;
public float maxSpin;
// Use this for initialization
void OnEnable () {
FingerGestures.OnTap += FingureGestures_OnTap;
FingerGestures.OnFingerSwipe += FingerGestures_OnFingerSwipe;
FingerGestures.OnPinchBegin += FingerGestures_OnPinchBegin;
FingerGestures.OnPinchMove += FingerGestures_OnPinchMove;
FingerGestures.OnPinchEnd += FingerGestures_OnPinchEnd;
}
// Update is called once per frame
void FingureGestures_OnTap (Vector2 fingurePos, int tapCount) {
Debug.Log ("Tapped:" +tapCount + "times(s) at " + fingurePos );
}
// spin the yellow cube when swipping it
void FingerGestures_OnFingerSwipe( int fingerIndex, Vector2 startPos, FingerGestures.SwipeDirection direction, float velocity )
{
// convert the swipe direction to a 3D vector we can use as our new forward direction for the particle emitter
if( direction == FingerGestures.SwipeDirection.Up )
heading = Vector3.left;
else if( direction == FingerGestures.SwipeDirection.Down )
heading = Vector3.right;
else if( direction == FingerGestures.SwipeDirection.Right )
heading = Vector3.down;
else if( direction == FingerGestures.SwipeDirection.Left )
heading = Vector3.up;
print ("Swiped to Direction :"+direction);
print("Vector:"+heading +"Velocity:" +velocity);
angle=velocity;
//transform.RotateAround(transform.position, heading, velocity * Time.deltaTime);
}
void FingerGestures_OnPinchBegin( Vector2 fingerPos1, Vector2 fingerPos2 )
{
Pinching = true;
}
void FingerGestures_OnPinchMove( Vector2 fingerPos1, Vector2 fingerPos2, float delta )
{
if( Pinching)
{
// to scale up and down object
//this.transform.localScale += delta * pinchScaleFactor * Vector3.one;
// to zoom in/out camera on pinch
print ("delta:"+ delta);
delta *=-(1f);
print ("delta:"+ delta);
fov = Camera.main.fieldOfView;
fov += delta * sensitivity;
fov = Mathf.Clamp(fov, minFov, maxFov);
Camera.main.fieldOfView = fov;
}
}
void FingerGestures_OnPinchEnd( Vector2 fingerPos1, Vector2 fingerPos2 )
{
if(Pinching)
{
Pinching= false;
}
}
void Start()
{
//shouldRotate=false;
}
void Update()
{
transform.RotateAround(this.transform.position,heading,angle*Time.deltaTime);
}
void OnDisable () {
FingerGestures.OnFingerSwipe -= FingerGestures_OnFingerSwipe;
FingerGestures.OnTap -= FingureGestures_OnTap;
FingerGestures.OnPinchBegin -= FingerGestures_OnPinchBegin;
FingerGestures.OnPinchMove -= FingerGestures_OnPinchMove;
FingerGestures.OnPinchEnd -= FingerGestures_OnPinchEnd;
}
}
Comment