Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ======================================= Declaring Variables looks like this:
- // jumping variables
- float _initialJumpVelocity;
- float _maxJumpHeight;
- float _maxJumpTime;
- bool _isJumping = false;
- bool _isJumpAnimating = false;
- int _jumpCount = 0;
- Dictionary<int, float> _initialJumpVelocities;
- Dictionary<int, float> _jumpGravities;
- Coroutine _currentJumpResetRoutine = null;
- ====================================== Awake function looks like this:
- void Awake()
- {
- _initialJumpVelocities = new Dictionary<int, float>();
- _jumpGravities = new Dictionary<int, float>();
- _playerInput = new PlayerInput();
- _characterController = GetComponent<CharacterController>();
- _animator = GetComponent<Animator>();
- // setup state based on this machine file, then select Grounded as default, and enter that state.
- _states = new PlayerStateFactory(this);
- _currentState = _states.Grounded();
- _currentState.EnterState();
- _isWalkingHash = Animator.StringToHash("isWalking");
- _isRunningHash = Animator.StringToHash("isRunning");
- _isJumpingHash = Animator.StringToHash("isJumping");
- _jumpCountHash = Animator.StringToHash("jumpCount");
- _playerInput.CharacterControls.Move.started += OnMovementInput;
- _playerInput.CharacterControls.Move.canceled += OnMovementInput;
- _playerInput.CharacterControls.Move.performed += OnMovementInput;
- _playerInput.CharacterControls.Run.started += OnRun;
- _playerInput.CharacterControls.Run.canceled += OnRun;
- _playerInput.CharacterControls.Jump.started += OnJump;
- _playerInput.CharacterControls.Jump.canceled += OnJump;
- SetupJumpVariables();
- }
- ================================================ SetupJumpVariables looks like this:
- void SetupJumpVariables()
- {
- _maxJumpHeight = 2.0f;
- _maxJumpTime = 0.75f;
- float timeToApex = _maxJumpTime / 2;
- _gravity = (-2 * _maxJumpHeight) / (timeToApex * timeToApex);
- _initialJumpVelocity = (2 * _maxJumpHeight) / timeToApex;
- // TODO: maybe switch out Pow as it's supposedly an expensive function
- float secondJumpGravity = (-2 * (_maxJumpHeight * 1.5f)) / Mathf.Pow((timeToApex * 1.25f), 2);
- float secondJumpInitialVelocity = (2 * (_maxJumpHeight * 1.5f) / (timeToApex * 1.25f));
- // TODO: maybe switch out Pow as it's supposedly an expensive function
- float thirdJumpGravity = (-2 * (_maxJumpHeight * 2f)) / Mathf.Pow((timeToApex * 1.5f), 2);
- float thirdJumpInitialVelocity = (2 * (_maxJumpHeight * 2f) / (timeToApex * 1.5f));
- _initialJumpVelocities.Add(1, _initialJumpVelocity);
- _initialJumpVelocities.Add(2, secondJumpInitialVelocity);
- _initialJumpVelocities.Add(3, thirdJumpInitialVelocity);
- _jumpGravities.Add(0, _gravity);
- _jumpGravities.Add(1, _gravity);
- _jumpGravities.Add(2, secondJumpGravity);
- _jumpGravities.Add(3, thirdJumpGravity);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement