private void ChangeState(DunkState _newState) { Transform i_handTransform = passController.GetHandTransform(); Animator i_playerAnimator = pawnController.GetAnimator(); switch (_newState) { case DunkState.Jumping: FeedbackManager.SendFeedback("event.DunkJumping", pawnController, Vector3.zero, Vector3.zero, Vector3.zero, !isPlayer); i_playerAnimator.SetTrigger("PrepareDunkTrigger"); break; case DunkState.Dashing: dunkDashFX = FeedbackManager.SendFeedback("event.DunkDashing", i_handTransform, Vector3.zero, Vector3.zero, Vector3.zero, !isPlayer).GetVFX(); break; case DunkState.Waiting: dunkWaitingFX = FeedbackManager.SendFeedback("event.DunkWaiting", i_handTransform, Vector3.zero, Vector3.zero, Vector3.zero, !isPlayer).GetVFX(); break; case DunkState.Canceling: if (dunkWaitingFX) { Destroy(dunkWaitingFX); } i_playerAnimator.SetTrigger("DunkMissedTrigger"); break; case DunkState.Receiving: if (dunkWaitingFX) { Destroy(dunkWaitingFX); } i_playerAnimator.SetTrigger("DunkTrigger"); FeedbackManager.SendFeedback("event.DunkCatchingBall", i_handTransform, Vector3.zero, Vector3.zero, Vector3.zero, !isPlayer); break; case DunkState.Explosing: if (dunkDashFX) { Destroy(dunkDashFX); } FeedbackManager.SendFeedback("event.DunkSmashingOnGround", pawnController, Vector3.zero, Vector3.zero, Vector3.zero, !isPlayer); break; } dunkState = _newState; }
public void CurveShoot(PassController _passController, PawnController _thrower, PawnController _target, BallDatas _passDatas, Vector3 _lookDirection) //Shoot a curve ball to reach a point { if (ballCoroutine != null) { StopCoroutine(ballCoroutine); } startPosition = _passController.GetHandTransform().position; transform.SetParent(null, true); transform.localScale = Vector3.one; ballInformations.thrower = _thrower; ballInformations.moveSpeed = _passDatas.moveSpeed; ballInformations.maxDistance = Mathf.Infinity; ballInformations.ballDatas = _passDatas; ballInformations.bounceCount = 0; ballInformations.canBounce = true; ballInformations.canHitWalls = true; ballInformations.curve = _passController.GetCurvedPathCoordinates(startPosition, _target, _lookDirection, out float d); ballInformations.timeFlying = 0; ballInformations.initialLookDirection = _lookDirection; ballInformations.isTeleguided = false; hitGameObjects.Clear(); ChangeState(BallState.Flying); UpdateColor(); }