Untitled
unknown
plain_text
a year ago
2.2 kB
7
Indexable
using UnityEditor.Callbacks;
using UnityEngine;
using System.Collections;
public class playerController : MonoBehaviour
{
public float speed;
public float jump;
private float Move;
private Rigidbody2D rb;
private SpriteRenderer spriteRenderer;
private bool canDoubleJump;
private float coyoteTime = 0.2f;
private float coyoteTimeCounter;
private float jumpBufferTime = 0.2f;
private float jumpBufferCounter;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
Move = Input.GetAxis("Horizontal");
if(IsGrounded()) {
coyoteTimeCounter = coyoteTime;
}
else {
coyoteTimeCounter -= Time.deltaTime;
}
if(Input.GetButtonDown("Jump"))
{
jumpBufferCounter = jumpBufferTime;
}
else {
jumpBufferCounter -= Time.deltaTime;
}
rb.linearVelocity = new Vector2(Move * speed, rb.linearVelocity.y);
if(Move < 0) {
gameObject.transform.localScale = new Vector2(-1,1);
}
else if(Move > 0) {
gameObject.transform.localScale = new Vector2(1,1);
}
if(jumpBufferCounter > 0f && coyoteTimeCounter > 0f || Input.GetButtonDown("Jump") && canDoubleJump ) {
rb.AddForce(new Vector2(rb.linearVelocityX,jump),ForceMode2D.Impulse);
jumpBufferCounter = 0f;
coyoteTimeCounter = 0f;
StartCoroutine(JumpCooldown());
}
if(Input.GetButtonUp("Jump") && rb.linearVelocityX > 0f) {
rb.linearVelocity = new Vector2(rb.linearVelocityX, rb.linearVelocityY * 0.5f);
}
}
bool IsGrounded()
{
Collider2D hit = Physics2D.OverlapCircle(transform.position,0.2f, LayerMask.GetMask("ground"));
if(hit){return true;}
else{return false;}
}
private bool canJump = true;
private float jumpCooldown = 0.1f;
IEnumerator JumpCooldown()
{
canJump = false;
yield return new WaitForSeconds(jumpCooldown);
canJump = true;
}
}
Editor is loading...
Leave a Comment