2D 플레이어 점프 구현
플레이어의 점프를 구현해보자
에셋은 골드메탈 에셋을 사용했다.
void Update()
{
//Jump 할 수 있는지 없는지
jumpCheck();
}
먼저 Update문에서 jumpCheck
함수를 돌린다.
void jumpCheck()
{
if (Input.GetButtonDown("Jump") && jumpCount < jumpCountMax)
{
jump();
}
if (isGround && jumpCount >= jumpCountMax)
jumpCount = 0;
}
jumpCount
변수를 이용해서(값 2) 2단 점프 이상은 하지 못하게 막을 것 이다.
void GroundCheak() { RaycastHit2D rayhit = Physics2D.Raycast(rigid.position, Vector2.down, 1, LayerMask.GetMask("Platform")); if (rayhit.collider != null) { isGround = true; } else { isGround = false; } }
Raycast로 땅 체크
public void jump()
{
if (rigid.velocity.y < maxForce) //y속도가 최대 속도보다 적을 때
{
rigid.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse); //위로 jumpForce만큼 힘을 준다
}
else //그렇지 않을 때
{
//y속도를 maxForce(최대 속도)만큼만 준다.
rigid.velocity = new Vector2(rigid.velocity.x,maxForce); //y속도를 maxForce(최대 속도)만큼만 준다.
}
jumpCount++;
}
AddForce 특성상
힘을 가하면 계속 쭉쭉쭉쭉 가해지기 때문에 중간에 진정(?) 시키지 않으면 총알보다 빠른 속도로 슝 지붕 킥 할 수 있다. 이를 막기 위해서 최대 속도(maxForce
)를 정해주어야한다.
maxForce
보다 y축의 속도가 작을 때만 힘을 가해주고, 크다면 무조건 속도는 최대 속도만 가해주면 됀다.
Author And Source
이 문제에 관하여(2D 플레이어 점프 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@stingray/2D-플레이어-점프-구현저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)