공부/Unity

[Unity] 2D 캐릭터 무한 점프 막기

돌멩이수프 2022. 8. 17. 19:11
728x90

 

좌우 이동은 마무리한 캐릭터가 스페이스를 먹었을 때 점프하게 하는 코드다. 기존 이동 코드에 내용을 추가해주면 된다. 플레이어에는 Rigidbody 2D, BoxCollider 2D가 들어있고, 바닥에는 Box Collider 2D가 들어있다. 바닥 태그를 Ground로 설정해준 상태이다.

 

bool _canJump;

void Update()
{
	Moving();
}

void OnCollisionEnter2D(Collision2D collision) //바닥과 충돌 감지
{
    if (collision.gameObject.tag == "Ground")
        _canJump = true;
}

protected virtual void Moving()
{
    if (Input.GetKeyDown(KeyCode.Space) && _canJump)
    {
        _dir = MoveDir.Up;
        _canJump = false;
        GetComponent<Rigidbody2D>().AddForce(Vector2.up * 5.0f, ForceMode2D.Impulse);
    }
}

 

✅ 주의할 점

3D 게임과 2D게임의 collisionEnter 함수 이름에 작은 차이가 있다. 3D에서는 OnCollisionEnter를 2D에서는 OnCollisionEnter2D를 사용한다.

 

이 코드에서 int _jumpCount를 추가해주어 점프를 할 때마다 _jumpCount--;를 하는 등으로 응용하면 이중점프, 삼중점프 등을 만들기 쉽다.

728x90