private void ResetDashPossibility() { _canDash = true; if (GenericHelpers.FloatEqualsPrecision(Mathf.Abs(transform.position.y), Mathf.Abs(_backCourtY), 0.25f)) { _isBackCourt = true; } else { _isBackCourt = false; } }
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); } }
//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; }
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; }
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(); } }