Untitled

mail@pastecode.io avatar
unknown
csharp
3 years ago
1.4 kB
31
Indexable
Never
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterControls : MonoBehaviour
{
    Rigidbody2D rb2d;
    public float speed = 200f;
    public float jumpForce = 200f;

    int jumpInput;
    float moveInput;

    bool isGrounded = false;
    float checkRadius = 0.5f;
    public Transform groundCheck;
    public LayerMask groundMask;
    
    Quaternion facingRight = Quaternion.Euler(Vector3.zero);
    Quaternion facingLeft = Quaternion.Euler(new Vector3(0, 180, 0));
    

    void Start()
    {
        rb2d = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        moveInput = Input.GetAxisRaw("Horizontal");

        isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, groundMask);
        if (Input.GetButtonDown("Jump") && isGrounded) {
            jumpInput = 1;
        } else {
            jumpInput = 0;
        }

        // left-right sprite flip
        if (moveInput > 0) {
            transform.rotation = facingRight;
        }
        if (moveInput < 0) {
            transform.rotation = facingLeft;
        }
    }

    private void FixedUpdate() {
        // vertical movement
        rb2d.velocity = new Vector2(moveInput * speed * Time.deltaTime, rb2d.velocity.y);
        // jumping
        rb2d.AddForce(new Vector2(0, jumpInput * jumpForce * Time.deltaTime), ForceMode2D.Impulse);

    }

}