public void Enter(BurinkeruInputManager inputManager, BurinkeruCharacterController parent, CharacterComponents components) { this.inputManager = inputManager; this.components = components; base.Enter(parent); }
void switchToSlideIfNeeded() { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } if (characterController.IsCrouching) { float enterTime = characterController.CrouchState.EnterTime; float currentTime = Time.unscaledTime; float timeDiff = currentTime - enterTime; Vector3 currentVelocity = characterController.DeltaPosition; currentVelocity.Scale(BurinkeruCharacterController.MovementAxes); currentVelocity /= Time.deltaTime; if (currentVelocity.sqrMagnitude > 10 && timeDiff < 0.5f) { slide(); } } }
public override void UpdateMovement() { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } if (groundedInternalState != null && groundedInternalState is PlayerSlideState) { groundedInternalState.UpdateMovement(); } else { updateDefaultGroundMovement(); } if (inputManager.IsCommandDown(BurinkeruInputManager.InputCommand.CROUCH)) { switchCrouch(); } else if (inputManager.IsCommandDown(BurinkeruInputManager.InputCommand.JUMP)) { onJumpButtonClicked(); } else if (inputManager.IsCommandDown(BurinkeruInputManager.InputCommand.RUN) && !characterController.IsBlinking) { switchRun(); } }
public virtual void Init(RigManager rigManager, BurinkeruCharacterController characterController, ParticlesManager particleManager) { this.rigManager = rigManager; this.characterController = characterController; this.particleManager = particleManager; CanAttack = true; initActionsDefinitions(); }
public override void Init(RigManager rigManager, BurinkeruCharacterController characterController, ParticlesManager particlesManager) { base.Init(rigManager, characterController, particlesManager); rigAnmationController = rigManager.RigWithKatana; rigAnmationController.OnAttackEnded += onAttackEnded; rigAnmationController.OnAttackStarted += onAttackStarted; rigAnmationController.OnCustomEvent += onCustomEventOccured; }
public override void Init(RigManager rigManager, BurinkeruCharacterController characterController, ParticlesManager particlesManager) { base.Init(rigManager, characterController, particlesManager); rigAnmationController = rigManager.RigWithRevolver; rigAnmationController.OnAttackEnded += onAttackEnded; rigAnmationController.OnCustomEvent += onCustomEvent; Bullets = MAX_BULLETS; CanAttack = true; }
protected virtual void switchCrouch() { BurinkeruCharacterController burinkeruCharacterController = (BurinkeruCharacterController)characterController; if (burinkeruCharacterController.IsCrouching) { burinkeruCharacterController.ExitCrouch(); } else { burinkeruCharacterController.EnterCrouch(); } }
void applyGravity() { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } if (!characterController.IsBlinking && wallRunState == null) { float gravity = -CharacterControllerParameters.Instance.Gravity * Time.deltaTime; addVelocity(new Vector3(0f, gravity, 0)); } }
protected override void onEnter() { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } Vector3 currentVelocity = characterController.Velocity; currentVelocity.y = 0; setVelocity(currentVelocity); switchToSlideIfNeeded(); }
void enterCrouch() { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } if (groundedInternalState != null && groundedInternalState is PlayerRunState) { slide(); } characterController.EnterCrouch(); }
protected override void switchCrouch() { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } if (characterController.IsCrouching) { exitCrouch(); } else { enterCrouch(); } }
void exitCrouch() { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } if (groundedInternalState != null && groundedInternalState is PlayerSlideState) { groundedInternalState.Exit(); groundedInternalState = null; } characterController.ExitCrouch(); }
void switchRun() { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } if (groundedInternalState == null) { if (characterController.IsCrouching) { exitCrouch(); } setNewInternalState(new PlayerRunState()); } }
void slide() { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } if (groundedInternalState != null) { groundedInternalState.Exit(); } PlayerSlideState slideState = new PlayerSlideState(); slideState.OnExitSlideStateRequested += onExitSlideStateRequested; slideState.Enter(inputManager, characterController, components); groundedInternalState = slideState; }
void setNewInternalState(PlayerState newState) { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } if (groundedInternalState == null || newState.GetType() != groundedInternalState.GetType()) { if (groundedInternalState != null) { groundedInternalState.Exit(); } newState.Enter(inputManager, characterController, components); groundedInternalState = newState; } }
bool tryToWallRun() { bool success = false; BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return(false); } PlayerWallRunState.WallRunRaycastResult result = PlayerWallRunState.RaycastWalls(characterController.transform); if (result.Success) { if (lastWallRunCollider == null || (lastWallRunCollider != result.Hit.collider) || (lastWallRunCollider == result.Hit.collider && wallRunToLastColliderAllowed)) { lastWallRunCollider = result.Hit.collider; Vector3 lookDirection = characterController.GetLookDirection(); float dot = Vector3.Dot(lookDirection, result.Direction); success = true; Vector3 v = characterController.GetLookDirection(); Vector3 n = result.Hit.normal; Vector3 vtn = Vector3.Cross(v, n); Vector3 res = Vector3.Cross(n, vtn); res.y *= 0.1f; result.RunDirection = res; wallRunState = new PlayerWallRunState(result); wallRunState.Enter(inputManager, characterController, components); wallRunState.RequestExit += onExitRequested; Debug.DrawRay(result.Hit.point, res * 10, Color.magenta, 1f); } } return(success); }
void onJumpButtonClicked() { BurinkeruCharacterController characterController = (BurinkeruCharacterController)this.characterController; if (characterController == null) { return; } if (characterController.IsCrouching) { if (groundedInternalState != null && groundedInternalState is PlayerSlideState) { jump(); } characterController.ExitCrouch(); } else { jump(); } }