방향을 정하고 그 쪽으로 선형으로 날아가는 발사체를 구현하려고 30분동안 씨름을 했었는데
의외로 쉽게 답이 나오긴 했다.
키워드를
'출발점 -> 목표점'이 아니라
'출발점 + 목표방향' 으로 하니까 쉽게 해결이 되었다.
일단, 물리공간 안에서 뭘 움직이려면
출발지점에서 도착지점으로 선형으로 점진적으로 값을 갱신해 나가던가
출발지점에서 도착지점 방향으로 선형적인 힘으로 밀어주면 된다는 작은 깨닳음이었는데
'출발점 -> 목표점'
위쪽은 지금 좌표를 도착지점 좌표 * deltaTime으로 해서 덮어 씌우는 것으로 가능. 수식은 대충 이런 느낌...
CurrentPosition = TargetPosition * Time.deltaTime * MoveSpeed
'출발점 + 목표방향'
아래쪽은 지금 위치에서 도착지점 방향으로의 방향 벡터를 구한 다음, 거리만큼의 힘으로 밀어주면 된다. 수식은 대충 이런 느낌...
currentPosition = currentPosition + DirectionVector.normalized * MoveSpeed * Time.deltaTime
따지고 들자면 '밀어준다'는 표현에 '힘'이 들어가 있지만, 내 감각적인 표현일 뿐.... 실제로는 DeltaTime동안 이동한 만큼 좌표를 이동시켜준다...
어쨌건, 이래저래 해서 다 만들고 났더니
transform.Translate(); 가 있더라고...
일단 현시점에서는 이동하는 모습만 보면 되니까 그냥 편한쪽으로.
정식 작업 전에 이 post를 참고해서 퍼포먼스 비교해 보고,
그 때 상황에 맞게 필요한 적절한 녀석으로 적용해보자.
'Unity2D' 카테고리의 다른 글
[Unity2D] 사이즈 조정 가능한 HP바 (RectTransform.sizeDelta) (0) | 2023.09.13 |
---|