Esempio n. 1
0
    public void Dash(Vector3 _direction)
    {
        if (!CanDash())
        {
            return;
        }
        if (playerUI != null)
        {
            playerUI.DisplayDashes();
        }
        Analytics.CustomEvent("PlayerDash", new Dictionary <string, object> {
            { "Zone", GameManager.GetCurrentZoneName() },
        });
        _direction = _direction.normalized;
        Vector3 i_startPosition = transform.position;
        Vector3 i_endPosition   = transform.position + _direction * distance;
        //Check for min distance & maxDistance
        RaycastHit hit;

        if (Physics.Raycast(linkedPawn.GetCenterPosition(), _direction, out hit, distance))
        {
            if (Vector3.Distance(linkedPawn.GetCenterPosition(), hit.point) <= minDistance)
            {
                return;                 //Cancel dash
            }
            else if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Environment"))
            {
                i_endPosition = hit.point - (_direction * 0.5f);
            }
        }
        i_endPosition.y = i_startPosition.y;

        linkedPawn.ChangePawnState("Dashing", Dash_C(i_startPosition, i_endPosition), StopDash_C());
    }
 public void ExtendArm()
 {
     linkedPawn.ChangePawnState("GrabThrowing", ExtendArm_C(), RetractArm_C());
 }