회전하는 물체가 오른쪽 끝에 표적을 맞추는 방법?


25

나는 플레이어가 자유롭게 조준하고 나이프를 던지는 나이프 타입의 무기를 만들고 있습니다. 나이프는 공기를 통해 회전하며 충돌시 회전이 멈추고 충돌 한 개체의 부모 자체가 회전합니다. 칼의 경로는 물리학에 의해 처리되는 동안 회전은 애니메이션을 통해 처리됩니다.

내가 직면하고있는 한 가지 문제는 칼이 적과 충돌 할 때 칼이 그들쪽으로 향하게하는 방법입니다. 현재 발생하는 상황은 나이프가 먼저 적의 손잡이에 내장되어 있다는 것입니다. 비현실적입니다. 동시에, 나는 칼이 회전하는 속도가 플레이어의 통제력을 넘어 서기 때문에 칼이 칼날을 먼저 충돌 한 경우에만 칼이 적을 "치게"하는 것은 상당히 불합리하다고 생각합니다.

나는 비슷한 무기의 느린 킬 킬 영상을 많이보고 있었고 무기를 던질 때마다 공중을 돌며 마법을 항상 목표물을 향하게합니다. 투사 거리가 일정한 게임의 경우에는 매우 간단합니다. 그러나 예측할 수없는 많은 요소가 있기 때문에 이것을 예측하는 방법을 잘 모르겠습니다. 칼의 방향, 칼의 회전, 적의 위치, 적과의 거리 등. 가능한 경우, 게임이 상당히 낮은 수준의 장치이기 때문에 복잡한 예측 논리를 사용하지 않는 것이 좋습니다. 이것을 해결하는 "연기 및 거울"방법이 있습니까?

예 : https://youtu.be/0fav8lFpBko?t=42s


15
칼이 항상 목표 블레이드를 먼저 때리는 것은 특히 현실적이지 않습니다. 특히 움직이는 대상에 대해 이야기 할 때.
Theraot

1
게임의 맛에 따라 칼날을 돌리지 않는 다양한 칼 던지기 스타일이 있습니다. 보통 그들은 안정적인 방식으로 비행하도록 특별히 설계된 나이프를 사용합니다.
Perkins

나이프의 질량 중심이 블레이드 끝이 아닌 핸들 끝에 상당히 가깝고 나이프 회전 속도가 이동 속도보다 훨씬 큰 경우 실제로 블레이드로 항상 대상에 부딪 칠 수 있습니다. 그것은 매우 이상한 칼이 될 것이고, 그렇게 던질 수있는 매우 이상한 생물 일 것입니다
Sarge Borsch

2
이 문제는 그것에 대해 TVTropes 문서가 있음을 눈에 잘 띄는 충분하다 : 블레이드 항상이 뾰족한 결국은 땅
메이슨 윌러

나는 또한 질문에서 구별되는 것을 좋아합니다. 물리 엔진에서 회전을 처리하도록 회전을 전환 한 경우 나이프 엔드가 대상을 충분히 향하고 있는지 확인하기 위해 충돌 시간에 계산할 충분한 정보가있을 수 있습니다. 애니메이션을 유지하거나 나이프의 애니메이션이 앞으로 향하고있는 값을 미리 굽고 현재 애니메이션 프레임을 비교하여 해당 범위 내에 있는지 확인하십시오.
Pysis

답변:


35

가짜

링크 한 비디오를보고 슬로우 모션으로 봅니다 ... 어, 저게 뭐죠? 카메라가 끝에서 점프하고 나이프가 이미 대상의 헬멧에 있습니다.

그냥 가짜. 나이프에서 대상까지의 거리가 작 으면 대상에서 마법으로 나이프로 점프 컷하십시오.

편집 : 복잡한 예측을 사용하여 대상에 도달했는지 확인한 다음 먼저 블레이드를 공격 한 것으로 가장하고 대상이 움직이지 않고 나이프가 대상을 죽이는 애니메이션을 표시합니다.


복잡한 예측

나이프가 회전하는 속도는 플레이어가 제어 할 수없는 수준입니다.

그거 맞아. 그것은 플레이어가 통제 할 수없는 것입니다. 그러나 통제 할 수없는 것은 아닙니다.

나이프가 이동해야하는 거리를 계산할 수 있으면 나이프가 블레이드에 먼저 닿도록 회전 속도를 설정할 수 있습니다.

이제 장애물을 방해 할 경우 나이프를 조정해야하므로 비행 중반에 이러한 예측을하는 것은 이치에 맞지 않습니다. 따라서 던질 때 할 것입니다.

테스트를하기 위해 포물선 경로를 따라야한다는 사실은 단순한 광선 투사보다 더 복잡합니다. 나는 칼 던지기에 해당하는 포물선 운동 방정식을 얻는 것이 좋습니다. 그리고 주어진 간격으로 그것을 평가했습니다.

포물선에서 가장 가까운 지점을 장애물의 위치로 찾아 포물선까지의 장애물 거리를 찾은 다음 해당 지점과의 충돌 검사를 수행 할 수도 있습니다.

칼이 얼마나 움직여야하는지 알면, 칼을 정수 회전 수로 나누어 칼날을 먼저 맞출 수 있습니다. 편집 : 또는 던지는 방법에 따라 정수 0.5.

물론, 칼이 도착하는 순간 장애물이 움직였을 것입니다…


현실적

특히 움직이는 대상의 경우 칼날을 100 % 먼저 공격하지 않습니다. 던지는 칼은 신뢰할 수있는 무기가 아니라는 사실을 받아들이십시오. 따라서 핸들을 먼저 칠 때 바운스되는 대안이 있습니다. 방향을 확인하고 충돌 지점의 방향과 비교하여 핸들을 먼저 쳤는지 확인할 수 있습니다.


1
아 나는 점프 컷을 보지 못했다. 얼마나 영리하면서도 그렇게 간단하다. 내가 제안한대로 프레임 단위로 볼 때 매우 분명합니다.
프론트 엔드

14

사후에 가장 확실하게 생성되는 킬 카메라 장면과 같이 나이프가 착륙 할 위치를 미리 알고 있다면 비행 거리와 원하는 회전 수를 기준으로 올바른 회전 속도를 계산하면됩니다. 던지는 나이프는 먼저 던지는 사람을 가장 먼저 떠나므로 N + 0.5 전체 회전 1 을 회전해야합니다 . 여기서 N은 일반적으로 1 이상이지만 던지는 사람의 기술 수준 또는 원하는 모양에 따라 더 많을 수 있습니다 : 더 많은 스핀 = 더 시원합니다.

그렇지 않으면 적중시 회전을 고정하여 부정 행위를하고 혈액 튄 자국으로 숨길 수 있습니다. 마술사처럼, 당신이 충분히 빨리하면 플레이어가 알아 차리지 못할 것입니다.

물론이 중 어느 것도 현실적이지 않습니다. 실생활에서 나이프 던지기는 매우 어렵고 칼을 먼저 날에 넣으려면 많은 연습이 필요합니다. 던지는 사람은 거리를 충분히 인식하고 그에 따라 던지기를 변경해야합니다. 그렇지 않으면 나이프가 먼저 충돌합니다.

1 : 칼날이 먼저가는 스타일도 있습니다.


4
+1 : 튄 자국. 좋은 마술. 편집 : 또는 비 고어 판의 먼지 구름.
Theraot

2
@Theraot 및 / 또는 회전 속도를 충분히 높여서 시청자가 가리키는 방향을 실제로 추적 할 수 없습니다.
Perkins

14
  1. 목표까지의 직선 거리를 계산하십시오.

  2. 각 프레임은 나이프의 각도를 2PI * (remainingStraightLineDistance) / (originalStraightLineDistance) * DesiredNumRotations로 설정했습니다.

나이프를 직선으로 움직이지 않지만 아무도 눈치 채지 못하면 스핀 비율이 약간 달라집니다.

목표를 미리 결정하지 않은 경우 (즉, 물리를 던지고 사용하여 적중하는 것을 확인하는 경우)이를 퍼지해야하지만 목표를 달성 할 가능성이있는 목표를 보는 것과 동일한 원칙을 사용할 수 있습니다. 해당 목표에 맞게 스핀을 조정합니다.


4

실제 던지는 나이프는 블레이드를 먼저 칠 확률이 높습니다. 그에 따라 나이프를 디자인하십시오.

위키 백과 에서 던지는 칼의 수집 : Wikipedia에서 던지는 나이프 모음

블레이드의 끝에서 가능한 한 멀리 떨어진 무게 중심과 회전 중심을 원합니다 . 이렇게하면 핸들 끝이 도달하기 전에 날이 타격 위치로 돌릴 확률이 높아집니다.

블레이드는 일반적으로 길고 얇아서 질량 중심으로부터 가능한 멀리 돌출하면서 가능한 한 적은 질량을 추가합니다. 또한 핸들 끝에 디스크 모양 또는 구형 카운터 웨이트가 종종 있으며, Wikipedia 이미지의 나이프에서는 볼 수 없습니다.

칼날은 날의 끝을 잡고 핸들을 던지는 방향으로 쳐서 던집니다.


2

"연기 및 거울"방식의 경우, 손잡이 (즉, 뾰족하지 않은 부분) 근처에 나이프의 회전 중심 (즉, 질량 중심)을 가질 수 있습니다. 이런 식으로, 회전 속도가 나이프 속도와 비교하여 충분히 높으면 블레이드의 끝이 다른 부분이 아닌 대상과 충돌하는 것을 보장 할 수 있습니다.

질량 중심과 치수가 주어지면 최소 회전 속도를 계산하는 것이 있지만 간단해야합니다. 또한 이것은 히트 각도에 대해 아무 것도 암시하지 않습니다.


1

완벽한 칼 던지기?

현재 애니메이션을 통해 칼을 돌리고 있다고 말합니다. 각도를 제어하기 위해 어떤 파라미터를 사용하고 있습니까? 프레임 번호? 게임 시간? 임의의 회전 속도로 조정 되었습니까?

대신 pi와 (턴 수 + 0.5)로 적절한 스케일링과 함께 매개 변수 (거리 이동) / (대상까지의 총 거리)를 사용하면 나이프는 실제로 마술처럼 항상 먼저 지점에 도달합니다.


이 질문의 첫 부분은 설명을 요구하는 것으로 보입니다. 아마도 질문에 대한 의견으로 작성되어야합니다. 마법의 도착 지점을 먼저 제안하는 방법을 자세히 설명해 주시겠습니까? 예를 들어 "pi로 적절한 스케일링을 사용하여"라고 말합니다. 어떤 스케일링? 사용자가 요청해야한다면 적절한 스케일링이 무엇인지 이해하지 못할 수도 있습니다.
Gnemlock

@TimB가 더 잘 설명했지만 Neil의 제안 된 솔루션은 좋은 접근 방식입니다. 회전 칼 애니메이션의 속도를 수정하여 대상에 도달 할 때 칼이 "뾰족한 끝이 다른 사람을 향하게"위치에 있도록합니다. 이동 목표 등을 포함하는 포물선 궤적을 계산하는 것보다 프로그래밍과 계산이 훨씬 쉽습니다. number_of_revolutions가 Neil의 의사 방정식에서 또 다른 변수 인 경우 "PI에 의한 적절한 스케일링"은 2 일 것입니다. 키 프레임 애니메이션 인 경우 인덱스 크기를 조정하고 pi를 잊어 버리면됩니다.
AC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.