void OnNewFinger(FingerObj newFinger) { if (TouchHelper.IsObjectUnderTouch(newFinger.originTouch, tapToMoveTarget.transform, .5f)) { fingerOfInterest = newFinger; fingerOfInterest.OnStatusChange += FingerStatusChange; } }
void OnNewFinger(FingerObj newFinger) { Vector2 distance = (Vector2)newFinger.transform.position - (Vector2)transform.position; if (distance.magnitude <= maxTapDistance) { fingerOfInterest = newFinger; fingerOfInterest.OnStatusChange += FingerStatusChange; } }
void FingerStatusChange(FingerObj foi) { Debug.Log(foi.name + " state's changed to " + foi.currentState); if (foi.currentState == FingerObj.TouchState.Ending) { // Swing on finger up SwingStick(); } else if (foi.currentState == FingerObj.TouchState.Dragging) { // We don't care about fingers being dragged fingerOfInterest.OnStatusChange -= FingerStatusChange; fingerOfInterest = null; } }
// Update is called once per frame void Update() { foreach (Touch thisTouch in Input.touches) { if (thisTouch.phase == TouchPhase.Began) { // we must have a new baby finger! FingerObj newFinger = Instantiate(fingerPrefab, TouchHelper.GetTouchWorldPosition(thisTouch), Quaternion.identity); // Instantiate all member variables the ugly way! newFinger.fingerID = thisTouch.fingerId; newFinger.transform.position = TouchHelper.GetTouchWorldPosition(thisTouch); newFinger.touchLastFrame = newFinger.touch = newFinger.originTouch = thisTouch; currentFingers.Add(newFinger); if (OnNewFinger != null) { OnNewFinger(newFinger); } } } if (Input.mousePresent) { if (Input.GetMouseButtonDown(0)) { // Debug.Log( "we got a mouse click"); // Create a new baby mouse finger 🐁 Touch thisTouch = TouchHelper.GetFakeMouseTouch(); FingerObj newFinger = Instantiate(fingerPrefab, TouchHelper.GetTouchWorldPosition(thisTouch), Quaternion.identity); // Instantiate all member variables the ugly way! newFinger.fingerID = thisTouch.fingerId; newFinger.transform.position = TouchHelper.GetTouchWorldPosition(thisTouch); newFinger.touchLastFrame = newFinger.touch = newFinger.originTouch = thisTouch; currentFingers.Add(newFinger); if (OnNewFinger != null) { OnNewFinger(newFinger); } } } foreach (FingerObj thisFinger in currentFingers) { thisFinger.UpdateFinger(); if (FingersDoneUpdating != null) { FingersDoneUpdating(); } } }
/// <summary> /// Check out <see cref="TouchManager.FingersDoneUpdating"/>. Only calls when the status changes, not every frame. /// </summary> void FingerStatusChange(FingerObj foi) { // Debug.Log( foi.name + " state's changed to " + foi.currentState ); if (foi.currentState == FingerObj.TouchState.Ending) { if (currentMode == InputMode.ReceivingInput) { if (!actLikeJoystick) { Shoot(); } fingerOfInterest = null; currentMode = InputMode.Idle; } else { fingerOfInterest = null; } } else if (foi.currentState == FingerObj.TouchState.Dragging) { StartCoroutine(GolfSwingRoutine()); } }
public static bool IsFingerLeaving(FingerObj finger) { return(finger.touch.phase == TouchPhase.Canceled || finger.touch.phase == TouchPhase.Ended); }