Better controller (infinite speed building glitch though)
This commit is contained in:
parent
18f0a6ef89
commit
c20c527b72
1 changed files with 25 additions and 5 deletions
|
|
@ -6,14 +6,12 @@ public class PlayerControllerV2 : MonoBehaviour
|
||||||
private CharacterController m_CharacterController;
|
private CharacterController m_CharacterController;
|
||||||
private Camera m_Camera;
|
private Camera m_Camera;
|
||||||
private bool m_IsGrounded = false;
|
private bool m_IsGrounded = false;
|
||||||
private bool m_WantJump = false;
|
|
||||||
public float m_LookSensitivity = 25f;
|
public float m_LookSensitivity = 25f;
|
||||||
public float m_PlayerSpeed = 10f;
|
public float m_PlayerSpeed = 10f;
|
||||||
private Vector2 m_MoveInput = Vector2.zero;
|
private Vector2 m_MoveInput = Vector2.zero;
|
||||||
private Vector2 m_LookInput = Vector2.zero;
|
private Vector2 m_LookInput = Vector2.zero;
|
||||||
private Vector3 m_Velocity = Vector3.zero;
|
private Vector3 m_Velocity = Vector3.zero;
|
||||||
private float m_MovementSmoothing = .05f;
|
public float m_MaxSpeed = 5f;
|
||||||
private bool m_isColliding = false;
|
|
||||||
|
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
||||||
|
|
@ -50,14 +48,36 @@ private void Move()
|
||||||
{
|
{
|
||||||
Vector3 direction = transform.right * m_MoveInput.x +
|
Vector3 direction = transform.right * m_MoveInput.x +
|
||||||
transform.forward * m_MoveInput.y;
|
transform.forward * m_MoveInput.y;
|
||||||
m_CharacterController.Move(direction * m_PlayerSpeed * Time.deltaTime);
|
|
||||||
|
m_Velocity += -transform.up * 9.81f * Time.deltaTime; // Gravity
|
||||||
|
|
||||||
|
// Reset negative velocity when landed
|
||||||
|
if (m_IsGrounded && m_Velocity.y < 0)
|
||||||
|
{
|
||||||
|
m_Velocity.y = -1 * Time.deltaTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply input to velocity only when on the ground
|
||||||
|
if (m_IsGrounded)
|
||||||
|
{
|
||||||
|
m_Velocity += direction * m_PlayerSpeed * Time.deltaTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply friction when on the ground and not moving
|
||||||
|
if (m_IsGrounded && m_MoveInput.magnitude < .1f /*dead zone*/)
|
||||||
|
{
|
||||||
|
m_Velocity.x /= 1.1f;
|
||||||
|
m_Velocity.z /= 1.1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_CharacterController.Move(m_Velocity * Time.deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnJump()
|
void OnJump()
|
||||||
{
|
{
|
||||||
if (m_IsGrounded)
|
if (m_IsGrounded)
|
||||||
{
|
{
|
||||||
//m_CharacterController.AddForce(new Vector3(0f,400f,0f));
|
m_Velocity.y = 10;
|
||||||
m_IsGrounded = false;
|
m_IsGrounded = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue