728x90
2D 게임 캐릭터 점프를 구현하겠습니다.

2D 콜라이더가 입혀진 캐릭터와 발판을 준비해줍니다.
그리고 캐릭터에는 리지드바디 2D를 추가해줍니다.
캐릭터에 리지드바디를 추가하였기 때문에 발판이 없을 경우 캐릭터가 끝없이 밑으로 추락하게됩니다.
[SerializeField] private Rigidbody2D rigid;
public float jumpPower;
public bool isJump = false;
private void Awake()
{
rigid = GetComponent<Rigidbody2D>();
}
private void Update()
{
Jump();
}
void Jump()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (!isJump)
{
isJump = true;
rigid.AddForce(Vector3.up * jumpPower, ForceMode2D.Impulse);
}
}
}
private void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.name.Equals("Box"))
{
isJump = false;
}
}
플레이어 컨트롤러에 위처럼 코드를 추가해줍니다.
스페이스바를 누르게 되면 isJump가 false 일 때 true로 바뀌면서 점프를 하게 됩니다.
그리고 제가 발판으로 추가해두었던 상자라는 이름의 게임 오브젝트에 닿으면 isJump가 다시 false가 되면서
다시 점프를 할 수 있는 상태가 됩니다.

jumpPower 변수에 적당한 값을 입력해주고 스페이스바를 누르면 캐릭터가 입력한 값만큼 점프를 하게 됩니다.

점프를 반복하니 캐릭터가 혼자 회전하며 추락하였습니다.
이 경우 캐릭터의 회전을 막기 위해 인스펙터에서 리지드바디에 Freeze Rotation Z를 체크해주면 해결됩니다.

728x90
'Unity > 2D' 카테고리의 다른 글
| Unity 2D 캐릭터 이동 (0) | 2020.12.03 |
|---|