public void UpdateCratesOpening() { foreach (Touch touch in Input.touches) { if (touch.phase == TouchPhase.Began) { if (currentlyTouchedCrate == null) { currentlyTouchedCrate = CheckForTouchedCrate(touch.position); currentlyMaintainedCrate = currentlyTouchedCrate; if (currentlyTouchedCrate != null) { currentlyTouchedCrate.StartCrateHighlight(); currentlyTouchedCrateFingerId = touch.fingerId; } } } else if (touch.phase == TouchPhase.Stationary || touch.phase == TouchPhase.Moved) { if (touch.fingerId == currentlyTouchedCrateFingerId) { EndArenaOpenableCrate newTouchedCrate = CheckForTouchedCrate(touch.position); if (currentlyTouchedCrate == currentlyMaintainedCrate) { if (currentlyTouchedCrate != newTouchedCrate) { currentlyMaintainedCrate = newTouchedCrate; currentlyTouchedCrate.EndCrateHighlight(); } } else { if (currentlyTouchedCrate == newTouchedCrate) { currentlyMaintainedCrate = currentlyTouchedCrate; currentlyTouchedCrate.StartCrateHighlight(); } } } } else if (touch.phase == TouchPhase.Ended) { if (touch.fingerId == currentlyTouchedCrateFingerId) { if (currentlyTouchedCrate == currentlyMaintainedCrate) { currentlyTouchedCrate.OpenCrate(); } currentlyTouchedCrateFingerId = -1; currentlyTouchedCrate = null; currentlyMaintainedCrate = null; } } } }
public void RemoveCrateToOpen(EndArenaOpenableCrate openedCrate) { cratesToOpen.Remove(openedCrate); openedCrates.Add(openedCrate); if (cratesToOpen.Count == 0) { remainingWaitTimeAfterAllCrates = waitTimeAfterAllCrates; } //OpenAfterCrateOpeningInterface(); }
public EndArenaOpenableCrate CheckForTouchedCrate(Vector3 screenPosition) { RaycastHit hit = new RaycastHit(); Ray targetRay = mainCamera.ScreenPointToRay(screenPosition); if (Physics.Raycast(targetRay, out hit)) { EndArenaOpenableCrate hitCrate = hit.collider.GetComponent <EndArenaOpenableCrate>(); if (hitCrate != null) { return(hitCrate); } } return(null); }