public override void UpdateState(XYAxisState axisState) { if (!PlayerController.IsGrounded() || !PlayerController.CrouchSettings.EnableCrouching) { return; } if ((PlayerController.PlayerState & PlayerState.Crouching) != 0) { if (axisState.YAxis >= 0f && PlayerController.CharacterPhysicsManager.CanMoveVertically( PlayerController.EnvironmentBoxCollider.size.y - CROUCH_STANDUP_COLLISION_FUDGE_FACTOR, false)) { PlayerController.PlayerState &= ~PlayerState.Crouching; return; } } else { if (axisState.YAxis < 0f) { PlayerController.PlayerState |= PlayerState.Crouching; Logger.Info( "Crouch executed, box collider size set to: " + PlayerController.CharacterPhysicsManager.BoxCollider.size + ", offset: " + PlayerController.CharacterPhysicsManager.BoxCollider.offset); } } }
private bool CanFire(XYAxisState axisState) { return((PlayerController.PlayerState & PlayerState.EnemyContactKnockback) == 0 && (PlayerController.PlayerState & PlayerState.Sliding) == 0 && (_projectileWeaponSettings.EnableAutomaticFire ? IsFireButtonPressed() : IsFireButtonDown()) && IsWithinRateOfFire()); }
public override PlayerStateUpdateResult GetPlayerStateUpdateResult(XYAxisState axisState) { if ((PlayerController.PlayerState & PlayerState.Locked) == 0) { return(PlayerStateUpdateResult.Unhandled); } return(PlayerStateUpdateResult.CreateHandled(_animationStateName)); }
public override PlayerStateUpdateResult GetPlayerStateUpdateResult(XYAxisState axisState) { if ((PlayerController.PlayerState & PlayerState.Sliding) == 0) { return(PlayerStateUpdateResult.Unhandled); } return(PlayerStateUpdateResult.CreateHandled("Slide")); }
protected Vector2 GetDirectionVector(XYAxisState axisState) { return(( axisState.IsInHorizontalSensitivityDeadZone() && PlayerController.IsFacingRight() ) || axisState.XAxis > 0f ? Vector2.right : -Vector2.right); }
private void AdjustSpriteScale(XYAxisState axisState) { if ((axisState.XAxis > 0f && _playerController.Sprite.transform.localScale.x < 1f) || (axisState.XAxis < 0f && _playerController.Sprite.transform.localScale.x > -1f)) { _playerController.Sprite.transform.localScale = new Vector3( _playerController.Sprite.transform.localScale.x * -1, _playerController.Sprite.transform.localScale.y, _playerController.Sprite.transform.localScale.z); } }
public override PlayerStateUpdateResult GetPlayerStateUpdateResult(XYAxisState axisState) { if (PlayerController.IsGrounded()) { return(PlayerStateUpdateResult.Unhandled); } return(PlayerController.CharacterPhysicsManager.Velocity.y >= 0f ? PlayerStateUpdateResult.CreateHandled("Jump") : PlayerStateUpdateResult.CreateHandled("Fall")); }
public void UpdatePlayerState(XYAxisState axisState) { var playerStateUpdateResult = PlayerStateUpdateResult.Max( UpdatePlayerStateControllers(axisState), UpdateWeaponControllers(axisState)); AdjustSpriteScale(axisState); if (playerStateUpdateResult.AnimationClipInfo != null) { PlayAnimation(playerStateUpdateResult.AnimationClipInfo); } }
private PlayerStateUpdateResult UpdateWeaponControllers(XYAxisState axisState) { foreach (var weaponControlHandler in _playerController.WeaponControlHandlers) { var playerStateUpdateResult = weaponControlHandler.Update(axisState); if (playerStateUpdateResult.IsHandled) { return playerStateUpdateResult; } } return PlayerStateUpdateResult.Unhandled; }
public override PlayerStateUpdateResult GetPlayerStateUpdateResult(XYAxisState axisState) { if ((PlayerController.PlayerState & PlayerState.Crouching) == 0) { return(PlayerStateUpdateResult.Unhandled); } if (axisState.IsInHorizontalSensitivityDeadZone()) { return(PlayerStateUpdateResult.CreateHandled("PlayerCrouchIdle")); } return(PlayerStateUpdateResult.CreateHandled("PlayerCrouchRun")); }
private PlayerStateUpdateResult UpdatePlayerStateControllers(XYAxisState axisState) { for (var i = 0; i < _playerStateControllers.Length; i++) { var playerStateUpdateResult = _playerStateControllers[i].UpdatePlayerState(axisState); if (playerStateUpdateResult.IsHandled) { return playerStateUpdateResult; } } return PlayerStateUpdateResult.Unhandled; }
public override void UpdateState(XYAxisState axisState) { if ( (PlayerController.PlayerState & PlayerState.AttachedToWall) != 0 && PlayerController.CharacterPhysicsManager.Velocity.y < 0f && ( (PlayerController.CharacterPhysicsManager.LastMoveCalculationResult.CollisionState.CharacterWallState & CharacterWallState.OnRightWall) != 0 || (PlayerController.CharacterPhysicsManager.LastMoveCalculationResult.CollisionState.CharacterWallState & CharacterWallState.OnLeftWall) != 0 )) { // TODO (Roman): this should be done via mecanim PlayerController.CharacterPhysicsManager.BoxCollider.offset = PlayerController.BoxColliderOffsetWallAttached; PlayerController.CharacterPhysicsManager.BoxCollider.size = PlayerController.BoxColliderSizeWallAttached; } }
public override PlayerStateUpdateResult GetPlayerStateUpdateResult(XYAxisState axisState) { if ( IsSlidingDownWall( () => (PlayerController.CharacterPhysicsManager.LastMoveCalculationResult.CollisionState.CharacterWallState & CharacterWallState.OnRightWall) != 0, () => PlayerController.Sprite.transform.localScale.x < 1f) || IsSlidingDownWall( () => (PlayerController.CharacterPhysicsManager.LastMoveCalculationResult.CollisionState.CharacterWallState & CharacterWallState.OnLeftWall) != 0, () => PlayerController.Sprite.transform.localScale.x > -1f)) { return(PlayerStateUpdateResult.CreateHandled("PlayerWallAttached")); } return(PlayerStateUpdateResult.Unhandled); }
public override PlayerStateUpdateResult GetPlayerStateUpdateResult(XYAxisState axisState) { if ((PlayerController.PlayerState & PlayerState.ClimbingLadder) == 0 && (PlayerController.PlayerState & PlayerState.ClimbingLadderTop) == 0) { return(PlayerStateUpdateResult.Unhandled); } var animationSpeed = (PlayerController.PlayerState & PlayerState.ClimbingLadderTop) == 0 && axisState.IsInVerticalSensitivityDeadZone() ? 0f : 1f; return((PlayerController.PlayerState & PlayerState.ClimbingLadderTop) != 0 ? PlayerStateUpdateResult.CreateHandled("Climb Laddertop", animationSpeed: animationSpeed) : PlayerStateUpdateResult.CreateHandled("Climb", animationSpeed: animationSpeed)); }
private string GetAnimationName(XYAxisState axisState) { if ((PlayerController.PlayerState & PlayerState.ClimbingLadder) != 0) { return("Climb And Shoot"); } if (PlayerController.IsAirborne()) { return("Airborne And Shoot"); } if (axisState.IsInHorizontalSensitivityDeadZone()) { return("Stand And Shoot"); } return("Run And Shoot"); }
public override PlayerStateUpdateResult Update(XYAxisState axisState) { if (CanFire(axisState)) { var direction = GetDirectionVector(axisState); var spawnLocation = GetSpawnLocation(direction); var projectile = _objectPoolingManager.GetObject( _projectileWeaponSettings.ProjectilePrefab.name, spawnLocation); if (projectile != null) { var projectileBehaviour = projectile.GetComponent <PlayerProjectileBehaviour>(); projectileBehaviour.StartMove( spawnLocation, direction * _projectileWeaponSettings.DistancePerSecond); _lastBulletTime = Time.time; _lastAnimationName = GetAnimationName(axisState); return(PlayerStateUpdateResult.CreateHandled( _lastAnimationName, 1)); } } if ((PlayerController.PlayerState & PlayerState.EnemyContactKnockback) == 0 && IsAttacking()) { return(PlayerStateUpdateResult.CreateHandled(GetAnimationName(axisState), 1)); } return(PlayerStateUpdateResult.Unhandled); }
public override PlayerStateUpdateResult GetPlayerStateUpdateResult(XYAxisState axisState) { if (!PlayerController.IsGrounded()) { return(PlayerStateUpdateResult.Unhandled); } if (PlayerController.CrouchSettings.EnableCrouching) { var result = _crouchController.UpdatePlayerState(axisState); if (result.IsHandled) { return(result); } } if (axisState.IsInHorizontalSensitivityDeadZone()) { return(PlayerStateUpdateResult.CreateHandled("Idle")); } return(PlayerStateUpdateResult.CreateHandled("Run Start", linkedAnimationNames: new string[] { "Run" })); }
public override PlayerStateUpdateResult GetPlayerStateUpdateResult(XYAxisState axisState) { return(PlayerStateUpdateResult.CreateHandled("Enemy Contact Knockback")); }
public abstract PlayerStateUpdateResult Update(XYAxisState axisState);
private bool IsClimbingLadder(XYAxisState axisState) { return((PlayerController.PlayerState & PlayerState.ClimbingLadder) != 0 && !axisState.IsInVerticalSensitivityDeadZone()); }
public virtual void UpdateState(XYAxisState axisState) { }
public PlayerStateUpdateResult UpdatePlayerState(XYAxisState axisState) { UpdateState(axisState); return(GetPlayerStateUpdateResult(axisState)); }