using SHADE; using System; //in air controls? public class PlayerController : Script { public enum RaccoonStates { IDILE, WALKING, RUNNING, INAIR, FALLING, HOLDING, CAUGHT, TOTAL } private RigidBody rb; private float xAxisMove; private float zAxisMove; private RaccoonStates currentState = RaccoonStates.IDILE; public float maxMoveVel = 2.0f; public float moveForce = 200.0f; public float sprintMultiplier = 1.5f; public float jumpForce = 500.0f; public float initialJumpForce = 100.0f; public float maxJumpForce = 500.0f; public float maxJumpTime = 500.0f; private bool isJumping = false; private bool isGrounded = false; public PlayerController(GameObject gameObj) : base(gameObj) { } protected override void awake() { rb = GetComponent(); if (rb == null) { Debug.LogError("RigidBody is NULL!"); } RaccoonStates currentState = RaccoonStates.IDILE; } protected override void update() { currentState = RaccoonStates.IDILE; Move(); Sprint(); Jump(); if (rb != null && currentState == RaccoonStates.IDILE) rb.LinearVelocity = new Vector3(0.0f, 0.0f, 0.0f); Debug.Log(currentState.ToString() + " x:" + rb.LinearVelocity.x.ToString() + " y:" + rb.LinearVelocity.y.ToString() + " z:" + rb.LinearVelocity.z.ToString()); } private void Move() { if (Input.GetKey(Input.KeyCode.A)) xAxisMove = -1; else if (Input.GetKey(Input.KeyCode.D)) xAxisMove = 1; else xAxisMove = 0; if (Input.GetKey(Input.KeyCode.W)) zAxisMove = -1; else if (Input.GetKey(Input.KeyCode.S)) zAxisMove = 1; else zAxisMove = 0; if((Input.GetKey(Input.KeyCode.A) || Input.GetKey(Input.KeyCode.D) || Input.GetKey(Input.KeyCode.W) || Input.GetKey(Input.KeyCode.S)) && currentState != RaccoonStates.RUNNING) currentState = RaccoonStates.WALKING; if (rb != null && currentState == RaccoonStates.WALKING) { if (rb.LinearVelocity.x <= maxMoveVel) rb.AddForce(new Vector3(moveForce * xAxisMove * (float)Time.DeltaTime, 0.0f, 0.0f)); else { Vector3 v = rb.LinearVelocity; v.x = maxMoveVel; rb.LinearVelocity = v; } if (rb.LinearVelocity.z <= maxMoveVel) rb.AddForce(new Vector3(0.0f, 0.0f, moveForce * zAxisMove * (float)Time.DeltaTime)); else { Vector3 v = rb.LinearVelocity; v.z = maxMoveVel; rb.LinearVelocity = v; } } } private void Sprint() { //left shift not working for now and chang eto getkey down if (Input.GetKey(Input.KeyCode.RightShift)) { if (currentState == RaccoonStates.WALKING && rb != null) { currentState = RaccoonStates.RUNNING; rb.LinearVelocity *= sprintMultiplier; } } if (Input.GetKeyUp(Input.KeyCode.RightShift)) { if (currentState == RaccoonStates.RUNNING && rb != null) { currentState = RaccoonStates.WALKING; rb.LinearVelocity /= sprintMultiplier; } } } //press and hold jump private void Jump() { if (currentState == RaccoonStates.WALKING || currentState == RaccoonStates.RUNNING || currentState == RaccoonStates.IDILE) { if (Input.GetKeyDown(Input.KeyCode.Space) && rb != null) { currentState = RaccoonStates.INAIR; rb.AddForce(new Vector3(0.0f, jumpForce, 0.0f)); } } //collision check when grounded } }