본문 바로가기

내일 배움 캠프/따봉Ib

[따봉Ib 👍] ASTROWARD (3) 트러블 슈팅

[타워에서 대각선 아래 각도로 퍼지는 Projectile 구현]

문제점

    ● 유닛을 향해 대각선 아래 방향으로 퍼지게 발사하는 타워를 구현하던 중 Projectile 방향을 적절하게 조정하는 데 어려움을 겪음

    ● 목표는 다음과 같음

        ○ 정면(firePivot.forward)을 기준으로 수평(XZ 평면)으로 퍼지면서 살짝 대각선 아래로 향하는 방향으로 Projectile을 날리기

    ● 하지만 Quaternion.AngleAxis를 활용한 다양한 시도에서 정확한 방향 제어가 어렵거나 기대한 회전 결과가 나오지 않음

 

시도해 본 것들

    ● 1번 시도: Cross + AngleAxis

        ○ 문제: 기준 벡터가 명확하지 않아 기준이 들쑥날쑥해지고 회전축도 복잡함

        ○ 결과: 위쪽으로 날아가거나 방향이 어긋나는 문제 발생

Vector3 baseDir = (firePivot.forward + Vector3.down).normalized;
Vector3 spreadAxis = Vector3.Cross(Vector3.up, baseDir);
Quaternion rotation = Quaternion.AngleAxis(angle, spreadAxis);
Vector3 dir = rotation * baseDir;

    ● 2번 시도: baseDir을 축으로 회전

        ○ 문제: baseDir 축 회전이 실제 XZ 퍼짐과 매칭되지 않음

        ○ 결과: 퍼짐 없이 거의 같은 방향으로 발사됨

Vector3 baseDir = (firePivot.forward + Vector3.down).normalized;
Quaternion rotation = Quaternion.AngleAxis(angle, baseDir);
Vector3 dir = rotation * Vector3.down;

    ● 3번 시도: 고정된 아래 방향에서 회전

        ○ 문제: 퍼지는 것처럼 보이지만 XZ 평면 기준 회전이 아님

        ○ 결과: 거의 원하는 방향이지만 회전 각도가 다름

Vector3 baseDir = (firePivot.forward + Vector3.down).normalized;
Vector3 baseFireDir = Vector3.down;
baseFireDir = (Vector3.down + firePivot.forward * 0.5f).normalized;

Quaternion rotation = Quaternion.AngleAxis(angle, baseDir);
Vector3 dir = rotation * baseFireDir;

    ● 4번 시도(최종): XZ 평면 기준 Y축 회전 + 수직 기울기

        ○ 장점

            ○ Quaternion.Euler을 통해 Y축 기준으로 명확하게 회전

            ○ 마지막 줄에서 Vector3.down을 혼합해 아래 방향으로 기울임

        ○ 결과: XZ 기준으로 잘 퍼지고 동시에 대각선 아래를 향하는 직관적인 방향 생성

Quaternion rotation = Quaternion.Euler(0f, angle, 0f);
Vector3 dir = rotation * firePivot.forward;
dir = (dir + Vector3.down * inclination).normalized;

 

해결 방법

    ● "수평 기준 회전 + 수직 기울기"의 조합이 가장 직관적

    ● Quaternion.Euler(0, angle, 0) 방식은 XZ 평면에서 퍼짐 각도(angle)를 다룰 때 가장 단순하고 확장성도 좋음

    ● 대각선 아래로의 기울기는  직접 Vector3.down을 섞어서 방향 벡터에 가중치를 주는 방식이 회전을 변경하기도 좋고 직관적이고 유연함

dir = (horizontalDir + Vector3.down * inclination).normalized;

 

■ 결과

    ● 원하는 방식대로 수평으로 퍼지고 대각선 아래 방향으로 기울어진 다발성 투사체가 정확하게 구현됨

    ● inclination 변수 하나로 기울기 강도 조절 가능

'내일 배움 캠프 > 따봉Ib' 카테고리의 다른 글

[따봉Ib 👍] ASTROWARD (4) 최종  (0) 2025.06.20
[따봉Ib 👍] ASTROWARD (2)  (0) 2025.06.17
[따봉Ib 👍] ASTROWARD (1)  (0) 2025.06.17