점프구현하기
<현재>
(수정 전)
(수정 후)
위 그림처럼 캐릭터가 타겟을 노란색 테두리를 착지 지점으로 계산하여 점프하는 구현하였다.
캐릭터가 중앙지점을 가장 높은 위치를 지난 후 밑으로 떨어질 때 속도가 빨라져야 더 자연스러운 점프모션이 될 것같다.
점프기능은 여러가지 방법이 있겠지만 DoTween을 사용했다.
스크립트를 살펴보자
Transform stpos; //플레이어 위치
Transform endpos; // 스킬발동 위치
Rigidbody Prb; //플레이어 Rigidbody
public void Jumpping()
{
Vector3 hpos = stpos.position + ((endpos.position - stpos.position) / 2);
Vector3[] Jumppath ={new Vector3(stpos.position.x,stpos.position.y,stpos.position.z),
new Vector3(hpos.x,hpos.y+3f,hpos.z),
new Vector3(endpos.position.x,endpos.position.y,endpos.position.z) };
Prb.DOPath(Jumppath, 2, PathType.CatmullRom, PathMode.Full3D); //점프구간
}
중간백터
Vector3 hpos = stpos.position + ((endpos.position - stpos.position) / 2);
hpos는 캐릭터에 움직일 path경로중 시작백터와 종료백터의 중간 백터가 된다.
path경로 설정
Vector3[] Jumppath ={new Vector3(stpos.position.x,stpos.position.y,stpos.position.z),
new Vector3(hpos.x,hpos.y+3f,hpos.z),
new Vector3(endpos.position.x,endpos.position.y,endpos.position.z) };
캐릭터가 지나갈 경로를 배열로 받는다. 시작백터그리고, 중간백터, 끝백터를 차례로 넣어준다.
여기서 중간백터의 y값은 캐릭터가 얼마만큼 점프할 것인가를 +해주면 된다.
점프동작부분
Prb.DOPath(Jumppath, 2, PathType.CatmullRom, PathMode.Full3D);
마지막으로 실제 점프가 이루어지는 DOpath인데 Dotween은 캐릭터의 리지드바디로 움직일 캐릭터를 설정해주고, 계산한 점프경로 백터 배열, path이동 타입을 설정해준다.
여기서 추가 업그레이드 해야 할 부분은 거리에 따른 점프시간(공중에 떠 있는 시간) 플레이어의 위치에서 점프하려는 거리에 맞게 점프시간을 설정하도록 할 것이다.
'포트폴리오 와 제작게임 > 슈팅게임' 카테고리의 다른 글
유니티) 스테미너 효과 UI #1 (0) | 2019.02.01 |
---|---|
유니티) 스테미너효과 UI #2 (0) | 2019.01.31 |