날아다니는 물체를 맞추는 건 많이 요원한 일임.
이건 군대에서 방공병과를 나왔으면 어느 정도 몸으로 느낄거야. 난 아니지만.
목표가 어디 있는지, 거리는 얼마인지, 목표의 이동 속도와 방향은 어떤지, 내가 쏘는 포탄의 탄속은 얼마인지 등등등...
근데 어차피 컴퓨터가 다 해주는 거 아님? <== 맞음.
그래서 대공 사격 조준 로직을 만들었음.
이렇게 깔쌈하게 맞출 수 있지.
포탄 하나하나에 리지드바디를 달아놓고, 목표 방향에 AddForce해서 발사함.
아무리 그래도 항력까지 계산하는 건 좀 아닌 것 같아서, 항력은 무시하기로 했음.
아이디어는 다음과 같음.
목표의 위치, 속도를 구한 후, 내가 쏠 탄이 목표까지 이동하는 동안 목표가 추가로 이동할 장소에 포탄을 발사하면 된다!
대충 이런 느낌.
목표와의 거리를 산출한 후 해당 거리까지 포탄이 도달하려면 t초가 필요하다고 가정했을 때 목표가 t초동안 이동한 후의 위치에 대고 쏘면 포탄이 맞는다는 논리.
근데 여기엔 한가지 문제점이 있음.
바로 이렇게. 목표가 이동하는 방향에 따라서 포탄이 이동해야 할 거리는 필연적으로 달라지는데, 이러면 계산이 안 맞는다는거임..
그렇다고 방정식을 세워서 요래조래 하기엔 난 수학은 1도 모르기 때문에 다른 방법을 찾아야 했음.
그래서 사용한 방법은 바로 루프를 돌리는거야.
계산이 한 번 더 들어갈때마다 반드시 오차가 적어지는 게 확인이 됐음.
경험상 8번의 루프를 돌리면 일반적인 포탄의 유효 사거리 내에서는 매우 정확한 조준을 해 주더라.
진짜 완전히 정밀하지는 않지만, 어차피 물리 실험 할 것도 아니니까 여기서 만족했음.
포탄이 비행하는 동안 가해지는 중력 가속도에 의한 궤적 변화도 같은 방식으로 처리했어.
그 결과물이 이 코드인데... 혹시 몰라서 반복 횟수를 프레임당 25536회까지 늘려봤는데 눈에 띄는 성능 저하는 없었음. 역시 컴퓨터라 그런가 수학 계산은 잘 하더라
여기서 파생된 장점이, 반복 횟수를 고의로 낮춰서 일부러 오조준을 할 수 있게 됐다는거야. 적 대공포가 너무 정확하게 쏘는 건 아무래도 게임적으로는 좀 그렇잖아.
반복 횟수 4짜리 대공포. 근거리에서 쏘는지라 직선 비행하는 항공기 상대로는 꽤 정확하게 날려.
작정하고 조준하려면 목표물의 가속도까지 고려해서 조준을 할 수도 있지만, 그건 진짜 뇌절인 것 같아. 차라리 유도 미사일을 쐈으면 쐈지.
긴 글 봐줘서 고마워!
아폴로니우스의 원 - dc App
수학 1도 모른다는 사람치곤 꽤나 수학적으로 사고하는데? ㄷㄷ
고마워요 채찍피티
확실히 아쉽넹.. 언리얼이었으면 실제같았을듯