Cześć, mam problem z ograniczeniem możliwości skakania w powietrzu. Dopóki postać jest w powietrzy postać nie powinna móc skoczyć drugi raz, dopiero po dotknięciu ziemi. Niestety postać może nadal skakać w powietrzu i nie mam pojęcia dlaczego nadal ma tę możliwość
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Copy : MonoBehaviour
{
[SerializeField] private LayerMask platformLayerMask;
private Rigidbody2D rigidbody2d;
private BoxCollider2D boxCollider2d;
private void Awake()
{
rigidbody2d = transform.GetComponent<Rigidbody2D>();
boxCollider2d = transform.GetComponent<BoxCollider2D>();
}
private void Update()
{
// Handle Jump
if (IsGrounded() && Input.GetKeyDown(KeyCode.Space))
{
float jumpVelocity = 5f;
rigidbody2d.velocity = Vector2.up * jumpVelocity;
}
}
private void FixedUpdate()
{
// Handle Movement
float moveSpeed = 10f;
rigidbody2d.constraints = RigidbodyConstraints2D.FreezeRotation;
if (Input.GetKey(KeyCode.LeftArrow))
{
rigidbody2d.velocity = new Vector2(-moveSpeed, rigidbody2d.velocity.y);
}
else
{
if (Input.GetKey(KeyCode.RightArrow))
{
rigidbody2d.velocity = new Vector2(+moveSpeed, rigidbody2d.velocity.y);
}
else
{
// No keys pressed
rigidbody2d.velocity = new Vector2(0, rigidbody2d.velocity.y);
rigidbody2d.constraints = RigidbodyConstraints2D.FreezePositionX | RigidbodyConstraints2D.FreezeRotation;
}
}
}
private bool IsGrounded()
{
float extraHeightText = 1f;
RaycastHit2D raycastHit = Physics2D.BoxCast(boxCollider2d.bounds.center, boxCollider2d.bounds.size, 0f, Vector2.down, extraHeightText, platformLayerMask);
Debug.Log(raycastHit.collider);
return raycastHit.collider != null;
}
}