Keep cube spinning after fling
- by Zero
So I've been trying to get started with game development for Android using Unity3D. For my first project I've made a simple cube that you can spin using touch. For that I have the following code:
using UnityEngine;
using System.Collections;
public class TouchScript : MonoBehaviour {
float speed = 0.4f;
bool canRotate = false;
Transform cachedTransform;
public bool CanRotate {
get { return canRotate; }
private set { canRotate = value; }
}
void Start () {
// Make reference to transform
cachedTransform = transform;
}
// Update is called once per frame
void Update () {
if (Input.touchCount > 0) {
Touch touch = Input.GetTouch (0);
// Switch through touch events
switch (Input.GetTouch (0).phase) {
case TouchPhase.Began:
if (VerifyTouch (touch))
CanRotate = true;
break;
case TouchPhase.Moved:
if (CanRotate)
RotateObject (touch);
break;
case TouchPhase.Ended:
CanRotate = false;
break;
}
}
}
bool VerifyTouch (Touch touch) {
Ray ray = Camera.main.ScreenPointToRay (touch.position);
RaycastHit hit;
// Check if there is a collider attached already, otherwise add one on the fly
if (collider == null) gameObject.AddComponent (typeof(BoxCollider));
if (Physics.Raycast (ray, out hit)) {
if (hit.collider.gameObject == this.gameObject)
return true;
}
return false;
}
void RotateObject (Touch touch) {
cachedTransform.Rotate (new Vector3 (touch.deltaPosition.y, -touch.deltaPosition.x, 0) * speed, Space.World);
}
}
The above code works fine. However, I'm wondering how I can keep the cube spinning after the user lifts his finger. The user should be able to "fling" the cube, which would keep spinning and after a while would slowly come to a stop due to drag.
Should I do this using AddForce or something? I'm really new to this stuff so I'd like it if you guys could point me in the right direction here :) .