Unity/2D

Unity 2D 캐릭터 점프

DoubleJK 2021. 8. 10. 21:57
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를 체크해주면 해결됩니다.

Freeze Rotation Z에 체크

728x90

'Unity > 2D' 카테고리의 다른 글

Unity 2D 캐릭터 이동  (0) 2020.12.03