Exemplo n.º 1
0
 private void ResetDashPossibility()
 {
     _canDash = true;
     if (GenericHelpers.FloatEqualsPrecision(Mathf.Abs(transform.position.y), Mathf.Abs(_backCourtY), 0.25f))
     {
         _isBackCourt = true;
     }
     else
     {
         _isBackCourt = false;
     }
 }
Exemplo n.º 2
0
    public void Recenter()
    {
        bool canStandbyHorizontal = false;
        bool canStandbyVertical   = false;

        IsControlledByAI = true;
        if (HasTheDisc)
        {
            HasTheDisc       = false;
            Animator.enabled = true;
            Animator.Play("Idle");
        }
        ControlledAction = ControlledAction.Recenter;
        if (transform.position.x + 0.1f < 0)
        {
            Move(Direction.Right);
        }
        else if (transform.position.x - 0.1f > 0)
        {
            Move(Direction.Left);
        }
        else
        {
            canStandbyHorizontal = true;
        }

        if (Player == CurrentPlayer.PlayerOne == transform.position.y > _backCourtY)
        {
            transform.position += new Vector3(0.0f, -WalkDistance, 0.0f);
        }
        else if (Player == CurrentPlayer.PlayerTwo == transform.position.y < -_backCourtY)
        {
            transform.position += new Vector3(0.0f, WalkDistance, 0.0f);
        }
        else
        {
            canStandbyVertical = true;
        }

        if (!canStandbyVertical && GenericHelpers.FloatEqualsPrecision(transform.position.x, 0.0f, 0.2f))
        {
            Direction = Direction.BackDash;
            SetOrientation();
        }

        if (canStandbyHorizontal && canStandbyVertical)
        {
            Standby();
        }
    }
 void OnCollisionEnter2D(Collision2D col)
 {
     if ((col.gameObject.tag == "Player" && _canBeDestroyedByPlayer) ||
         col.gameObject.tag == "Goal" ||
         col.gameObject.tag == "TrainingWall" ||
         col.gameObject.tag == "FrozenWall" ||
         col.gameObject.tag == "Target")
     {
         AI ai = null;
         if (col.gameObject.tag == "Player" && (ai = col.gameObject.GetComponent <AI>()) != null &&
             GenericHelpers.FloatEqualsPrecision(Physics2D.gravity.x, 0.0f, 0.1f))
         {
             ai.HasHitPredictionDisc = true;
         }
         Destroy(gameObject);
     }
 }
Exemplo n.º 4
0
    //private void Recenter()
    //{
    //    if (transform.position.x + 0.1f < 0)
    //        _linkedPlayer.GetComponent<PlayerBehavior>().Move(Direction.Right);
    //    else if (transform.position.x - 0.1f > 0)
    //        _linkedPlayer.GetComponent<PlayerBehavior>().Move(Direction.Left);
    //    else
    //        _linkedPlayer.GetComponent<PlayerBehavior>().Standby();
    //}

    public void Recenter()
    {
        HasHitPredictionDisc = false;
        bool canStandbyHorizontal = false;
        bool canStandbyVertical   = false;

        if (transform.position.x + 0.1f < 0)
        {
            _linkedPlayer.GetComponent <PlayerBehavior>().Move(Direction.Right);
        }
        else if (transform.position.x - 0.1f > 0)
        {
            _linkedPlayer.GetComponent <PlayerBehavior>().Move(Direction.Left);
        }
        else
        {
            canStandbyHorizontal = true;
        }

        if (Player == CurrentPlayer.PlayerOne == transform.position.y > _backCourtY)
        {
            transform.position += new Vector3(0.0f, -_linkedPlayer.GetComponent <PlayerBehavior>().WalkDistance, 0.0f);
        }
        else if (Player == CurrentPlayer.PlayerTwo == transform.position.y < -_backCourtY)
        {
            transform.position += new Vector3(0.0f, _linkedPlayer.GetComponent <PlayerBehavior>().WalkDistance, 0.0f);
        }
        else
        {
            canStandbyVertical = true;
        }

        if (!canStandbyVertical && GenericHelpers.FloatEqualsPrecision(transform.position.x, 0.0f, 0.2f))
        {
            _linkedPlayer.GetComponent <PlayerBehavior>().Direction = Direction.BackDash;
            _linkedPlayer.GetComponent <PlayerBehavior>().SetOrientation();
        }

        if (canStandbyHorizontal && canStandbyVertical)
        {
            _linkedPlayer.GetComponent <PlayerBehavior>().Standby();
        }
        _isBackCourt = true;
    }
Exemplo n.º 5
0
    public void Dash()
    {
        bool dashNetOrBackCourt = false;

        if (!_canDash || IsCastingSP)
        {
            return;
        }
        else if (Direction == Direction.Standby && _canMoveToNet)
        {
            dashNetOrBackCourt = true;
            if (!GenericHelpers.FloatEqualsPrecision(Mathf.Abs(transform.position.y), Mathf.Abs(_backCourtY), 0.25f))
            {
                Direction = Direction.BackDash;
            }
        }

        _canDash  = false;
        IsDashing = true;
        float distance = DashDistance;

        if (dashNetOrBackCourt && Direction == Direction.Standby)
        {
            distance = _frontNetYDashDistance;
        }
        else if (dashNetOrBackCourt && Direction == Direction.BackDash)
        {
            distance = Mathf.Abs(_backCourtY) - Mathf.Abs(transform.position.y);
        }
        if (Direction == Direction.Left ||
            Player == CurrentPlayer.PlayerOne && Direction == Direction.BackDash ||
            Player == CurrentPlayer.PlayerTwo && Direction == Direction.Standby)
        {
            distance = -distance;
        }

        SetOrientation(isDash: true);
        _dashingDirection = Direction;
        _dashingStart     = transform.position;
        if (!dashNetOrBackCourt)
        {
            _dashingEnd = transform.position + new Vector3(distance, 0.0f, 0.0f);
        }
        else
        {
            _dashingEnd = transform.position + new Vector3(0.0f, distance, 0.0f);
        }

        if (_dashingEnd.x < -_gameManager.GetComponent <GameManagerBehavior>().DistanceWall)
        {
            _dashingEnd = new Vector3(-_gameManager.GetComponent <GameManagerBehavior>().DistanceWall, _dashingEnd.y, 0.0f);
        }
        if (_dashingEnd.x > _gameManager.GetComponent <GameManagerBehavior>().DistanceWall)
        {
            _dashingEnd = new Vector3(_gameManager.GetComponent <GameManagerBehavior>().DistanceWall, _dashingEnd.y, 0.0f);
        }

        StretchOnDash();

        Animator.enabled     = false;
        CurrentSprite.sprite = DashSprite;
        Invoke("ResetDash", _dashCooldown);
        var tmpDashEffect = Instantiate(DashEffect, transform.position, transform.rotation);

        tmpDashEffect.transform.eulerAngles += new Vector3(0.0f, 0.0f, 180.0f);
        var tmpDashParticles = Instantiate(DashEffectParticles, transform.position, gameObject.transform.rotation);

        tmpDashParticles.GetComponent <EffectBehavior>().ObjectToFollow = gameObject;
    }
Exemplo n.º 6
0
    private void ActFromBallPosition()
    {
        if (HasHitPredictionDisc && _isBackCourt)
        {
            if (_linkedPlayer.GetComponent <PlayerBehavior>().SPCooldown <= 0)
            {
                _linkedPlayer.GetComponent <PlayerBehavior>().Lift(); //CastSP
            }
            return;
        }
        var predictionDisc = GetPredictionDisc();

        if (predictionDisc != null && predictionDisc.transform.position.y < transform.position.y &&
            GenericHelpers.FloatEqualsPrecision(predictionDisc.transform.position.x, transform.position.x, 0.1f) &&
            transform.position.y - predictionDisc.transform.position.y <= 1.25f &&
            _canDash &&
            _isBackCourt)
        {
            var rand = Random.Range(0, 3);
            if (rand != 0 && (_middleWallBehavior == null || _middleWallBehavior.Order != 2))
            {
                _linkedPlayer.GetComponent <PlayerBehavior>().Dash();
                _canDash = false;
                Invoke("ResetDashPossibility", _repeatDashCooldown);
                return;
            }
        }
        bool shouldDashLimit = false;

        if (_ball.transform.position.y < _startReactDistance && Player == CurrentPlayer.PlayerTwo)
        {
            return;
        }
        if (_ball.transform.position.y > -_startReactDistance && Player == CurrentPlayer.PlayerOne)
        {
            return;
        }
        if (_ball.transform.position.y > _yBallLimit && Player == CurrentPlayer.PlayerTwo)
        {
            shouldDashLimit = true;
        }
        if (_ball.transform.position.y < _yBallLimit && Player == CurrentPlayer.PlayerOne)
        {
            shouldDashLimit = true;
        }
        if ((_canDahEarly && _ball.transform.position.x + _linkedPlayer.GetComponent <PlayerBehavior> ().DashDistance < transform.position.x && _canDash) ||
            (shouldDashLimit == true && _ball.transform.position.x + 0.1f < transform.position.x && _canDash))
        {
            _linkedPlayer.GetComponent <PlayerBehavior> ().Direction = Direction.Left;
            _linkedPlayer.GetComponent <PlayerBehavior> ().Dash();
            _canDash = false;
            Invoke("ResetDashPossibility", _repeatDashCooldown);
        }
        else if ((shouldDashLimit == false && _ball.transform.position.x - _linkedPlayer.GetComponent <PlayerBehavior> ().DashDistance > transform.position.x && _canDash) ||
                 (shouldDashLimit == true && _ball.transform.position.x - 0.1f > transform.position.x && _canDash))
        {
            _linkedPlayer.GetComponent <PlayerBehavior> ().Direction = Direction.Right;
            _linkedPlayer.GetComponent <PlayerBehavior> ().Dash();
            _canDash = false;
            Invoke("ResetDashPossibility", _repeatDashCooldown);
        }
        else if (_ball.transform.position.x + 0.2f < transform.position.x)
        {
            _linkedPlayer.GetComponent <PlayerBehavior> ().Move(Direction.Left);
        }
        else if (_ball.transform.position.x - 0.2f > transform.position.x)
        {
            _linkedPlayer.GetComponent <PlayerBehavior> ().Move(Direction.Right);
        }
        else if (_linkedPlayer.GetComponent <PlayerBehavior> ().SPCooldown <= 0 && Vector2.Distance(transform.position, _ball.transform.position) <= _startCastDistance)
        {
            _linkedPlayer.GetComponent <PlayerBehavior> ().Lift();             //CastSP
        }
        else
        {
            _linkedPlayer.GetComponent <PlayerBehavior> ().Standby();
        }
    }