PlayerController and PickAndThrow #167
|
@ -1,13 +1,37 @@
|
||||||
using SHADE;
|
using SHADE;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
//in air controls?
|
||||||
|
|
||||||
public class PlayerController : Script
|
public class PlayerController : Script
|
||||||
{
|
{
|
||||||
|
public enum RaccoonStates
|
||||||
|
{
|
||||||
|
IDILE,
|
||||||
|
WALKING,
|
||||||
|
RUNNING,
|
||||||
|
INAIR,
|
||||||
|
FALLING,
|
||||||
|
HOLDING,
|
||||||
|
CAUGHT,
|
||||||
|
TOTAL
|
||||||
|
}
|
||||||
|
|
||||||
private RigidBody rb;
|
private RigidBody rb;
|
||||||
public float xAxisMove;
|
private float xAxisMove;
|
||||||
public float zAxisMove;
|
private float zAxisMove;
|
||||||
public float force = 800.0f;
|
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) { }
|
public PlayerController(GameObject gameObj) : base(gameObj) { }
|
||||||
|
|
||||||
|
@ -18,14 +42,22 @@ public class PlayerController : Script
|
||||||
{
|
{
|
||||||
Debug.LogError("RigidBody is NULL!");
|
Debug.LogError("RigidBody is NULL!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RaccoonStates currentState = RaccoonStates.IDILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void update()
|
protected override void update()
|
||||||
{
|
{
|
||||||
Move();
|
currentState = RaccoonStates.IDILE;
|
||||||
|
|
||||||
//float x = xAxisMove * force * (float)Time.DeltaTime;
|
Move();
|
||||||
//Debug.Log(x.ToString());
|
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()
|
private void Move()
|
||||||
|
@ -45,8 +77,69 @@ public class PlayerController : Script
|
||||||
else
|
else
|
||||||
zAxisMove = 0;
|
zAxisMove = 0;
|
||||||
|
|
||||||
if (rb != null)
|
if((Input.GetKey(Input.KeyCode.A) || Input.GetKey(Input.KeyCode.D) || Input.GetKey(Input.KeyCode.W) || Input.GetKey(Input.KeyCode.S)) && currentState != RaccoonStates.RUNNING)
|
||||||
rb.AddForce(new Vector3(xAxisMove * force * (float)Time.DeltaTime, 0.0f, zAxisMove * force * (float)Time.DeltaTime));
|
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
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue