![유니티 박스(장애물) 높이별 점프 구현해보기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXmzlx%2FbtrJLTa2cER%2Fe0oZKsnL953AtDkwpJxwoK%2Fimg.png)
여러가지 이유로 현타도 오고 벽도 느끼고 생각도 많아진 주말을 보냈다.
덕분에 공부할 시간을 날렸지만 마음을 다잡은 계기가 된것같다.
제대로 공부를 시작하기 전에 그냥 살짝 맛보기로라도 구현해보고 싶은 기능이 있어서 정말 구현만 해봤다.
이미 많은 분들이 알고 계시기도 하겠지만, 혹여나 모르는 분들이 계신다면 조금이라도 도움이 됐으면 좋겠다.
애니메이션 처리나 코드는 정말 막했으니 방법만 보고 자기방법으로 응용해서 해보시는게 좋을것같다.
레이캐스트 3개 만들기
이런식으로 높이가 다른 3개의 박스를 점프를 통해 넘어가는 기능을 구현하려고 한다.
판단을 위해 빈 오브젝트를 생성해서 레이캐스트를 쏠 위치를 잡아주었다.
스크립트상에서는 RayPos라는 트랜스폼 배열을 선언하고 아래부터 순서대로 넣어주었다.
private int Checkray()
{
int tempcount = 0;
if (Physics.Raycast(RayPos[0].position, this.transform.forward, 1.0f, 1<<LayerMask.NameToLayer("Box")))
tempcount++;
if (Physics.Raycast(RayPos[1].position, this.transform.forward, 1.0f, 1 << LayerMask.NameToLayer("Box")))
tempcount++;
if (Physics.Raycast(RayPos[2].position, this.transform.forward, 1.0f, 1 << LayerMask.NameToLayer("Box")))
tempcount++;
return tempcount;
}
박스를 다 Box라는 레이어로 설정 해주고 점프버튼을 눌렀을때 레이캐스트로 체크하는 함수를 만들어주었다.
각각의 포지션에서 레이를 쏴서 몇개의 레이가 맞았는지 반환해준다.
(그냥 아무 생각없이 짠 보여주기도 부끄러운 코드니 따라하진 않으셨으면..)
점프
if (Input.GetKeyDown(KeyCode.Space))
{
switch(Checkray())
{
case 1:
CheckJump(1,2.5f,3.5f,0.1f);
break;
case 2:
CheckJump(2, 3.5f, 3.5f,0.2f);
break;
case 3:
myAnim.SetTrigger("3");
myAnim.applyRootMotion = true;
myRigid.isKinematic = true;
break;
}
}
업데이트문에서 스페이스를 누르면 점프를 하게 만들었는데, 함수의 반환 숫자에 따라 다른 점프를 하게했다.
무릎까지 오는 장애물까지는 리지드 바디를 통해 점프를 만들었고,
가장 높은 박스는 루트모션을 이용했다.
결과
Debug.DrawRay(RayPos[0].position, this.transform.forward, Color.red);
Debug.DrawRay(RayPos[1].position, this.transform.forward, Color.red);
Debug.DrawRay(RayPos[2].position, this.transform.forward, Color.red);
씬뷰에서 확인하기 위해 레이를 쏘게하고 확인해본다.
애니메이션 처리가 참 구리지만 똑같은 스페이스바를 눌러도 앞 박스의 높이에 따라 다른 점프가 작동한다.
포폴에 정교하게 넣고싶다고 생각은 했었는데 내 포폴 분위기에 이런 점프를 넣는게 좀 안어울려서 안했다.
아무튼 구현 하실분들은 코드나 애니메이션처리를 좀 더 깔끔하게 하셔서 진행하시면 될것같다.
'게임 엔진 > Unity' 카테고리의 다른 글
유니티 에셋공부 <DOTween Pro> - (1) (2) | 2023.01.15 |
---|---|
[Unity] 포톤서버를 이용해 간단한 말풍선 채팅 만들어보기 (0) | 2022.09.25 |
[유니티 공식 유튜브] IL2CPP란 무엇일까? (0) | 2022.08.09 |
[유니티 공식 유튜브] 모바일 게임 성능 최적화 - 2편 (0) | 2022.08.07 |
[유니티 공식 유튜브] 모바일 게임 성능 최적화 - 1편 (0) | 2022.08.01 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!