Exemple #1
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (slottedFlingable == null && !onCooldown)
     {
         Flingable flingableCheck = collision.GetComponent <Flingable>();
         if (flingableCheck != null && flingableCheck.slottable)
         {
             SlotFlingable(flingableCheck);
         }
     }
 }
Exemple #2
0
 void SlotFlingable(Flingable newFlingable)
 {
     newFlingable.flingSlot = this;
     slottedFlingable       = newFlingable;
     slottedFlingable.springJoint.connectedBody   = rb;
     slottedFlingable.springJoint.connectedAnchor = Vector2.zero;
     //slottedFlingable.springJoint.breakForce = Mathf.Infinity;
     slottedFlingable.springJoint.distance = 0.005f;
     slottedFlingable.springJoint.enabled  = true;
     //StartCoroutine(SetBreakableForce());
 }
Exemple #3
0
 IEnumerator TempDisableCollision(Flingable flingable)
 {
     Physics2D.IgnoreCollision(flingable.collider, collider2d, true);
     //print("disabled collision between " + this.name + " and " + flingable.name);
     while (!flingable.CanFling || flingable.focused)
     {
         yield return(null);
     }
     //print("re-enabled collision between " + this.name + " and " + flingable.name);
     Physics2D.IgnoreCollision(flingable.collider, collider2d, false);
 }
Exemple #4
0
    void HighlightTarget(Flingable newHighlight)
    {
        if (currentHighlight != null)
        {
            currentHighlight.Highlight(false);
        }
        currentHighlight = newHighlight;

        if (newHighlight != null)
        {
            newHighlight.Highlight(true);
        }
    }
Exemple #5
0
    // Update is called once per frame
    void Update()
    {
        //don't care if we can do this in the water any more
        GetCandidateFlingables();
        if (flingCandidates.Count > 0)
        {
            target = GetBestFlingable();
            HighlightTarget(target);

            if (!determiningDirection && playerMovement.fishPlayer.GetButtonDown("SecondaryAbility"))
            {
                determiningDirection = true;
                target.focused       = true;
                StartCoroutine(SlowTime(timeSlow));
                StartCoroutine(TempDisableCollision(target));
            }

            if (determiningDirection)
            {
                playerMovement.SetAimerVisibility(true);
                Vector2 aimVector = playerMovement.fishPlayer.GetAxis2D("Horizontal", "Vertical");
                if (aimVector.magnitude == 0)
                {
                    aimVector = playerMovement.aimDirection;
                }

                playerMovement.aimDirection = aimVector.normalized;

                transform.position = Vector2.Lerp(transform.position, target.transform.position, .1f);

                if (playerMovement.fishPlayer.GetButtonUp("SecondaryAbility"))
                {
                    target.Fling(rb, -aimVector.normalized, flingSpeed, flingAcceleration);
                    determiningDirection = false;
                    HighlightTarget(null);
                    playerMovement.SetAimerVisibility(false);
                }
            }
        }
        else
        {
            determiningDirection = false;
            target = null;
            HighlightTarget(null);
        }
    }
Exemple #6
0
    Flingable GetBestFlingable()
    {
        Flingable result       = null;
        float     smallestDist = 10000;

        foreach (Flingable flingable in flingCandidates)
        {
            float dist = Vector2.Distance(transform.position, flingable.transform.position);
            if (dist < smallestDist)
            {
                smallestDist = dist;
                result       = flingable;
            }
        }

        return(result);
    }
Exemple #7
0
 public void UnslotFlingable()
 {
     slottedFlingable = null;
     StartCoroutine(CooldownSlot(cooldownAfterFling));
 }