점프 설정하는 방법은
Update 함수에 아래 코드를 추가해 주면 된다.
//Jump
if (Input.GetButton("Jump"))
{
rigid.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
}
그럼 Player Move 스크립트 inpector에서 Jump Power를 설정할 수 있는 칸이 생긴다.
이 때 내려오는 속도가 너무 느리다면 Rigidbody 2D에서 Gravity 값을 조절해도 되고
Edit -> Project setting 에서 gravity Y값을 변경해도 된다.
애니메이션은 동일하게 만들고 다만 점프는 반복하면 안되기 때문에 loop time 옵션은 체크 해제해준다.
RayCast : 오브젝트 검색을 위해 Ray를 쏘는 방식
Debug.DrawRay() : 오브젝트에서 Ray를 쏘는 함수
RayCastHit : Ray에 닿은 오브젝트
RayCastHit의 콜라이더 변수로 검색 확인 가능
Layer Mask : 물리 효과를 구분하는 정수
레이캐스트 부분 복습 필요..
영상과 좀 다른 부분도 있고 이해안가는 부분도 있다.
//Landing Platform
if(rigid.velocity.y < 0) // y축 속도가 음수인 경우 = 점프하고 내려오는 순간
{
Debug.DrawRay(rigid.position, Vector3.down, new Color(0, 1, 0)); //레이를 그린다.
//현재 포지션에서 LayerMask Platform을 검색한다.
RaycastHit2D rayHit = Physics2D.Raycast(rigid.position,
Vector3.down, 1,
LayerMask.GetMask("Platform"));
//rayHit에 충돌이 있는 경우
if (rayHit.collider != null)
{
//충돌한 오브젝트와의 거리가 0.5 이하인 경우
if (rayHit.distance < 0.5f)
{
//Debug.Log(rayHit.collider.name);
//isJumping을 false로 setting
anim.SetBool("isJumping", false);
}
}
}
이동하다가 점프를 한 상태에서 이동키를 떼지 않는 경우 점프 state에서 idle로 넘어가지 않는다.
아직 원인은 모르겠다. 추후 확인해서 업데이트해봐야겠다.
'Unity' 카테고리의 다른 글
| [Unity] 타일맵으로 플랫폼 만들기 (0) | 2022.08.09 |
|---|---|
| [Unity] 플레이어 이동 구현하기 (0) | 2022.08.06 |
| [Unity] 프로젝트 생성과 github을 이용한 버전 관리 (0) | 2022.08.02 |
| Unity의 시작 (0) | 2022.08.02 |