/* * @author Valentin Simonov / http://va.lent.in/ */ using System; using UnityEngine; using TouchScript.Gestures; using Random = UnityEngine.Random; namespace TouchScript.Examples.Tap { /// public class Break : MonoBehaviour { public float Power = 10.0f; private LongPressGesture longPressGesture; private PressGesture pressGesture; private MeshRenderer rnd; private bool growing = false; private float growingTime = 0; private Vector3[] directions = { new Vector3(1, -1, 1), new Vector3(-1, -1, 1), new Vector3(-1, -1, -1), new Vector3(1, -1, -1), new Vector3(1, 1, 1), new Vector3(-1, 1, 1), new Vector3(-1, 1, -1), new Vector3(1, 1, -1) }; private void OnEnable() { rnd = GetComponent(); longPressGesture = GetComponent(); pressGesture = GetComponent(); longPressGesture.StateChanged += longPressedHandler; pressGesture.Pressed += pressedHandler; } private void OnDisable() { longPressGesture.StateChanged -= longPressedHandler; pressGesture.Pressed -= pressedHandler; } private void Update() { if (growing) { growingTime += Time.unscaledDeltaTime; rnd.material.color = Color.Lerp(Color.white, Color.red, growingTime); } } private void startGrowing() { growing = true; } private void stopGrowing() { growing = false; growingTime = 0; rnd.material.color = Color.white; } private void pressedHandler(object sender, EventArgs e) { startGrowing(); } private void longPressedHandler(object sender, GestureStateChangeEventArgs e) { if (e.State == Gesture.GestureState.Recognized) { // if we are not too small if (transform.localScale.x > 0.05f) { // break this cube into 8 parts for (int i = 0; i < 8; i++) { var obj = Instantiate(gameObject) as GameObject; var cube = obj.transform; cube.parent = transform.parent; cube.name = "Cube"; cube.localScale = 0.5f*transform.localScale; cube.position = transform.TransformPoint(directions[i]/4); cube.GetComponent().AddForce(Power*Random.insideUnitSphere, ForceMode.Impulse); cube.GetComponent().material.color = Color.white; } Destroy(gameObject); } } else if (e.State == Gesture.GestureState.Failed) { stopGrowing(); } } } }