Did a few things
This commit is contained in:
@@ -3,39 +3,31 @@ using UnityEngine.Events;
|
||||
|
||||
public class CharacterController2D : MonoBehaviour
|
||||
{
|
||||
public float m_JumpForce = 400f; // Amount of force added when the player jumps.
|
||||
|
||||
public float m_JumpVelocity = 20f;
|
||||
public AudioSource SFX;
|
||||
public AudioClip JumpSFX;
|
||||
public LayerMask m_WhatIsGround; // A mask determining what is ground to the character
|
||||
public Transform m_GroundCheck; // A position marking where to check if the player is grounded.
|
||||
public LayerMask GroundLayer;
|
||||
public Transform GroundCheckElement;
|
||||
public float GroundCheckRadius = 0.2f;
|
||||
bool OnGround;
|
||||
public Rigidbody2D rb;
|
||||
|
||||
const float k_GroundedRadius = .2f; // Radius of the overlap circle to determine if grounded
|
||||
private bool m_Grounded; // Whether or not the player is grounded.
|
||||
const float k_CeilingRadius = .2f; // Radius of the overlap circle to determine if the player can stand up
|
||||
private Rigidbody2D m_Rigidbody2D;
|
||||
private bool m_FacingRight = true; // For determining which way the player is currently facing.
|
||||
private Vector3 m_Velocity = Vector3.zero;
|
||||
bool wasOnGround = false;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
m_Rigidbody2D = GetComponent<Rigidbody2D>();
|
||||
|
||||
}
|
||||
bool CanJump = false;
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
m_Grounded = false;
|
||||
|
||||
// The player is grounded if a circlecast to the groundcheck position hits anything designated as ground
|
||||
// This can be done using layers instead but Sample Assets will not overwrite your project settings.
|
||||
Collider2D[] colliders = Physics2D.OverlapCircleAll(m_GroundCheck.position, k_GroundedRadius, m_WhatIsGround);
|
||||
for (int i = 0; i < colliders.Length; i++)
|
||||
wasOnGround = OnGround;
|
||||
if (Physics2D.CircleCast(GroundCheckElement.position, GroundCheckRadius, Vector2.zero, 0f, GroundLayer))
|
||||
{
|
||||
if (colliders[i].gameObject != gameObject)
|
||||
{
|
||||
m_Grounded = true;
|
||||
}
|
||||
OnGround = true;
|
||||
}
|
||||
else{
|
||||
OnGround = false;
|
||||
}
|
||||
if (wasOnGround != OnGround && OnGround == true){
|
||||
CanJump = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,33 +35,18 @@ public class CharacterController2D : MonoBehaviour
|
||||
public void Move(float move, bool jump)
|
||||
{
|
||||
|
||||
// Move the character by finding the target velocity
|
||||
Vector3 targetVelocity = rb.velocity;
|
||||
targetVelocity[0] = move;
|
||||
rb.velocity = targetVelocity;
|
||||
|
||||
Vector3 targetVelocity = m_Rigidbody2D.velocity;
|
||||
targetVelocity[0] = move * 10f;
|
||||
m_Rigidbody2D.velocity = targetVelocity;
|
||||
|
||||
// If the player should jump...
|
||||
if (m_Grounded && jump)
|
||||
if (OnGround && jump && CanJump)
|
||||
{
|
||||
m_Grounded = false;
|
||||
targetVelocity = m_Rigidbody2D.velocity;
|
||||
targetVelocity[1] = m_JumpForce;
|
||||
m_Rigidbody2D.velocity = targetVelocity;
|
||||
OnGround = false;
|
||||
targetVelocity = rb.velocity;
|
||||
targetVelocity[1] = m_JumpVelocity;
|
||||
rb.velocity = targetVelocity;
|
||||
SFX.clip = JumpSFX;
|
||||
SFX.Play();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void Flip()
|
||||
{
|
||||
// Switch the way the player is labelled as facing.
|
||||
m_FacingRight = !m_FacingRight;
|
||||
|
||||
// Multiply the player's x local scale by -1.
|
||||
Vector3 theScale = transform.localScale;
|
||||
theScale.x *= -1;
|
||||
transform.localScale = theScale;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user