Question by
safak93 · Sep 17, 2016 at 03:45 PM ·
rotationrotation axis
Rotation on all axes
I'm trying to roate the gameobject like the video below in the editor mode but somehow I can't bring it to work. It's rotating only in one axis.
https://www.youtube.com/watch?v=TOqnVteUo64
Can someone help me?
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Rotation : MonoBehaviour {
private float angle = 180f;
void FixedUpdate () {
List<Touch> touches = InputHelper.GetTouches ();
if (touches.Count > 0) {
foreach (Touch touch in touches) {
switch (touch.phase) {
case TouchPhase.Began:
break;
// Determine direction by comparing the current touch position with the initial one.
case TouchPhase.Moved:
angle += touch.deltaPosition.x * 0.5f;
if (angle < 95f) {
angle = 95f;
} else if (angle > 265f) {
angle = 265f;
}
transform.localRotation = Quaternion.Euler (transform.rotation.x, -angle, transform.rotation.z);
break;
// Report that a direction has been chosen when the finger is lifted.
case TouchPhase.Ended:
break;
}
}
}
}
}
Inputhelper:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class InputHelper : MonoBehaviour {
private static TouchCreator lastFakeTouch;
public static List<Touch> GetTouches()
{
List<Touch> touches = new List<Touch>();
touches.AddRange(Input.touches);
#if UNITY_EDITOR
if(lastFakeTouch == null) lastFakeTouch = new TouchCreator();
if(Input.GetMouseButtonDown(0))
{
lastFakeTouch.phase = TouchPhase.Began;
lastFakeTouch.deltaPosition = new Vector2(0,0);
lastFakeTouch.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
lastFakeTouch.fingerId = 0;
}
else if (Input.GetMouseButtonUp(0))
{
lastFakeTouch.phase = TouchPhase.Ended;
Vector2 newPosition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
lastFakeTouch.deltaPosition = newPosition - lastFakeTouch.position;
lastFakeTouch.position = newPosition;
lastFakeTouch.fingerId = 0;
}
else if (Input.GetMouseButton(0))
{
lastFakeTouch.phase = TouchPhase.Moved;
Vector2 newPosition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
lastFakeTouch.deltaPosition = newPosition - lastFakeTouch.position;
lastFakeTouch.position = newPosition;
lastFakeTouch.fingerId = 0;
}
else
{
lastFakeTouch = null;
}
if (lastFakeTouch != null) touches.Add(lastFakeTouch.Create());
#endif
return touches;
}
}
Comment
Your answer
Follow this Question
Related Questions
How to rotate an object relative to another different object's axies? 0 Answers
Make GameObject rotate around another around random axis but with fixed distance 0 Answers
How would I add rotation limits to this? 1 Answer
How can I flip a player over the Horizontal and Vertical axis? 0 Answers
Get object's rotation around axis defined by vector 2 Answers