공부/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