https://github.com/khsfashi/Road-Kill
GitHub - khsfashi/Road-Kill: 유니티 3D를 통해 레이싱 게임을 제작합니다.
유니티 3D를 통해 레이싱 게임을 제작합니다. Contribute to khsfashi/Road-Kill development by creating an account on GitHub.
github.com
일단 띄우는 건 성공했으니, 이제 이동을 구현해야 하니까...
차체 모델을 넣고 그 모델 기준으로 바퀴 위치 잡고 광선 쏴서 하는 게 더 좋을 것이라고 판단해서 차 모델을 가져다 넣었다.
이동을 구현하려고 차 계층구초 안에다가 Acceleration Point라는 걸 하나 생성했다.
해당 점 기준으로 AddForceAtPosition함수 불러서 차에 속도를 부여하려고 했는데..
아주 정신머리가 나갔다.
덤블링을 해버리는데 웃긴놈이다 아주
아마 점 기준으로 힘을 줘서 그런 것 같은데....
계속 시도를 해보니까 바퀴에 콜라이더가 있어서 거기에 자꾸 걸린다.
바퀴 콜라이더를 없애고, 바닥면에 foward 벡터 투영해서 방향 결정을 했다.
울퉁불퉁한 바닥에서도 실험을 해봐야 할 것 같은데.... 일단 카메라 달고 달려보자.
뒤에 따라가는 카메라는 시네머신 카메라 사용하니까 그냥 간편했다. 알아서 잘 따라가줘서...
맨바닥에 달리니까 방향 감각 없어져서 잘 도는지도 모르겠으니 나무라도 몇개 배치하고 돌아봐야겠다.
잘 간다.
좌우로 트니까 약간 드리프트 같이 되어버리는데 좀 고민을 해봐야겠다.
저렇게 도는 건 shift 누르고 할 때 저렇게 하고 싶은데...
단순하게 옆으로 도는 힘을 살짝만 추가할까 고민중이다.
지금 도는 거는 Animation Curve를 넣어서 속도 따라 도는 속도를 조절했다.
커브 그래프를 조정하면 아마 드리프트 같이 보이는 게 좀 줄어들 것 같다.
그리고 이게 점 기준으로 힘을 주다보니까 무게중심을 바닥에 두니 자꾸 앞으로 고꾸라지길래 그냥 원래대로 돌린 채로 하고 있다.
나중에 트랙 추가하고 문제가 되면 수정하던가 해야겠다.
바퀴 돌리기
바퀴 돌리려고 보니까, 그냥 객체 받아와서 하는 게 편할 것 같아서 gameobject 배열로 받아다 썼다.
근데 그냥 돌릴라니까 x축 기준으로 돌리는 거랑 앞바퀴 회전하는 거랑 겹쳐서 좀 이상해지길래 바퀴 계층구조를 하나 더 늘렸다. (부모 빈객체 만들고 안에 바퀴)
부모 객체는 앞바퀴만 좌우 돌리는 거 적용하고 자식 바퀴들은 x축 기준 굴러가게 하니까 꽤 자연스러워졌다.
바퀴가 잘 굴러가니까 진짜 자동차 게임 같다.
근데 문제가 발생했다.
약간 덜커덩 거리는 느낌 줄라고 바퀴 위치 a4에 써가면서 계산해가지고 대충 식 만들어서 넣었더니 굉장히 이상하게 나왔다.
음.. 상당히 어지럽다.
일단 당장 이 문제들부터 해결해야겠다.
일단 바퀴 사라지는 거는 내가 변수를 잘못 썼었다. 바퀴 광선 쏘는 점들 좌표 가져와야 하는데 바퀴 바닥 좌표를 가져와서...
그리고 좌우 연타하면 바퀴 튀어나오는 게 너무 빠르게 입력해서 그런 거였다.
이거 방지하려고 바퀴 회전 연산에 Lerp 함수 적용해서 선형보간으로 좀 부드럽게 회전하게 바꿨다.
그리고 뒷바퀴가 드리프트할 때는 아예 회전을 안하니까 되게 어색해서 좀 바꿔봤다.
생각보다 결과물이 괜찮다.
아 그리고 코드 내부 잘 보면 wheelEulerAngles라는 변수가 있는데, 이게 회전 변환해서 transform.localEulerAngles에 y값만 바꿔서 저장하려니까 내부 변수에 할당할 수 있는 게 아니고 게터 세터만 있는 놈이라 원래는 new Vector3를 했었다.
근데 new를 매 프레임 하면 GC 입장에서 너무 비효율적이라 멤버 변수 추가해서 값을 저장하고, 그 변수를 할당하는 식으로 처리했다.
일단 오늘은 여기까지만 하고, 내일은 SkidMark랑 거기에 나오는 이펙트 처리하고, 동물들 충돌 처리 같은 걸 좀 해보겠다.
'유니티 > 유니티 프로젝트' 카테고리의 다른 글
Road Kill 개발 일지 4일차 - 스크립터블 오브젝트로 데이터 관리, 여러 오류 해결 (0) | 2024.07.12 |
---|---|
Road Kill 개발 일지 3일차 - 코드 리팩토링 (0) | 2024.07.09 |
Road Kill 개발 일지 2일차 - Skid Mark, Effect와 시원하게 동물 날려버리기 (0) | 2024.07.06 |
Road Kill 개발 일지 1일차(1) - 게임 기획 + 차량 서스펜션 구현 (0) | 2024.07.04 |
Unity 2D - Auto Battler Sample Project (0) | 2024.06.17 |