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
'공부 > Unity' 카테고리의 다른 글
[Unity] 게임 화면이 파란색만 뜬다 (0) | 2022.10.05 |
---|---|
[Unity] Object Pooling/Pool Manager는 왜 사용하는가? (0) | 2022.08.25 |
[Unity] GetKey / GetKeyDown / GetKeyUp (0) | 2022.08.16 |
[Unity] Tile로 만든 맵, 선이 생겨서 마음에 들지 않을 때 (0) | 2022.08.15 |
[Unity] player가 갈 수 없는 영역 표시하기 (0) | 2022.08.15 |