コード例 #1
0
 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;
             }
         }
     }
 }
コード例 #2
0
    public void RemoveCrateToOpen(EndArenaOpenableCrate openedCrate)
    {
        cratesToOpen.Remove(openedCrate);
        openedCrates.Add(openedCrate);

        if (cratesToOpen.Count == 0)
        {
            remainingWaitTimeAfterAllCrates = waitTimeAfterAllCrates;
        }
        //OpenAfterCrateOpeningInterface();
    }
コード例 #3
0
    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);
    }