문제를 해결하기 위해 여러가지 방법을 사용해 보았습니다
첫 번째로는, LayerMask와 Raycast를 사용해보았습니다.
bool isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, groundMask);
if (isGrounded && isJumping)
{
_rigidbody.velocity = new Vector2(_rigidbody.velocity.x, jumpForce);
isJumping = false;
}
문제는 근본적인 문제였던 중력처리를 하지 못해 생겼었던 점프를 하면 그만큼 다시 내려오지 않는 문제가 생겼었습니다.
어찌 되었건 중력의 처리를 필수적이라고 생각이 들게 되었습니다.
문제를 해결하기 위해서 다시 처음부터 구조를 설계해봤습니다.
점프를 할 때 무엇이 필요한지 고민을 해보았고, 인터넷의 도움을 받아서 스크립트에서 그냥 가짜 중력을 부여해줄 수 있다는 것을 알았습니다.
그리고 화살이 날아가는 코드를 배웠었는데, 거기서 Time.fixedDeltaTime이 있었습니다.
고정된 시간 간격으로 값을 업데이트 해주는 것을 알게 되었고, 이것을 활용해서 수치를 조절해주면 최고점에 도달하면서 속도가 느려지게 설정하고, 떨어질때 음수 값을 점점 더 더해주면서 낙하하게 만들 수 있다는 것을 깨닫게 되었습니다.
이렇게 해서 무사히 탑다운 형식의 2D 게임에서 점프를 구현할 수 있었습니다.