Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using UnityEngine;
- public class FirstPersonMovement : MonoBehaviour
- {
- public float speed = 5;
- private float standartMoveSpeed;
- [Header("Running")]
- public bool canRun = true;
- public bool IsRunning { get; private set; }
- public float runSpeed = 9;
- public KeyCode runningKey = KeyCode.LeftShift;
- Rigidbody rigidbody;
- /// <summary> Functions to override movement speed. Will use the last added override. </summary>
- public List<System.Func<float>> speedOverrides = new List<System.Func<float>>();
- void Awake()
- {
- // Get the rigidbody on this.
- rigidbody = GetComponent<Rigidbody>();
- }
- private void Start () {
- standartMoveSpeed = speed;
- }
- void FixedUpdate()
- {
- // Update IsRunning from input.
- IsRunning = canRun && Input.GetKey(runningKey);
- // Get targetMovingSpeed.
- float targetMovingSpeed = IsRunning ? runSpeed : speed;
- if (speedOverrides.Count > 0)
- {
- targetMovingSpeed = speedOverrides[speedOverrides.Count - 1]();
- }
- // Get targetVelocity from input.
- Vector2 targetVelocity =new Vector2( Input.GetAxis("Horizontal") * targetMovingSpeed, Input.GetAxis("Vertical") * targetMovingSpeed);
- // Apply movement.
- rigidbody.velocity = transform.rotation * new Vector3(targetVelocity.x, rigidbody.velocity.y, targetVelocity.y);
- }
- public void IncreasMoveSpeed (float newSpeed){
- speed = newSpeed;
- }
- public void SetStandartSpeed(){
- speed =standartMoveSpeed;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement