일반적으로 게임에서 이러한 궤적을 예측하려면 물리 엔진을 사용하여 트라젝토리를 계산하는 방법이 많이 사용됩니다. 유니티에서는 이를 위해 `Rigidbody`와 같은 물리 컴포넌트를 활용합니다. 아래는 간단한 앵그리 버드 스타일의 투사체 궤적을 그리는 코드 예제입니다.
먼저, 다음과 같은 스크립트를 새로 생성하고, 앵그리 버드가 발사될 때 이 스크립트를 적용할 수 있습니다.
```csharp
using UnityEngine;
public class ProjectilePathDrawer : MonoBehaviour
{
public Transform target; // 앵그리 버드 발사 대상 (타겟)
public float initialSpeed = 10f; // 초기 발사 속도
public int segmentCount = 20; // 예상 궤적을 나눌 세그먼트 수
private LineRenderer lineRenderer;
void Start()
{
lineRenderer = GetComponent<LineRenderer>();
lineRenderer.positionCount = segmentCount;
}
void Update()
{
DrawPath();
}
void DrawPath()
{
Vector3[] segments = new Vector3[segmentCount];
// 초기 위치 및 속도 설정
Vector3 position = transform.position;
Vector3 velocity = (target.position - position).normalized * initialSpeed;
// 시간 간격 계산
float timeDelta = 1f / initialSpeed;
// 예상 궤적 계산
for (int i = 0; i < segmentCount; i++)
{
segments[i] = position;
velocity += Physics.gravity * timeDelta;
position += velocity * timeDelta;
}
// 라인 렌더러에 궤적 설정
lineRenderer.SetPositions(segments);
}
}
```
이 코드는 `LineRenderer`를 사용하여 앵그리 버드의 발사 예상 궤적을 그립니다. 여기서 주요 포인트는 다음과 같습니다:
1. **target**: 발사할 목표물의 Transform을 설정합니다.
2. **initialSpeed**: 앵그리 버드의 초기 발사 속도를 설정합니다.
3. **segmentCount**: 예상 궤적을 몇 개의 세그먼트로 나눌지 설정합니다. 더 많은 세그먼트를 사용할수록 궤적이 더 부드럽게 보입니다.
4. **DrawPath()**: 궤적을 계산하고, 각 세그먼트마다 LineRenderer에 위치를 설정하여 그립니다.
5. **Physics.gravity**: 유니티의 물리 중력 값을 이용하여 중력 영향을 계산합니다.
이 코드를 앵그리 버드가 발사될 때 적절한 위치에서 호출하면, 해당 위치에서 target으로 향하는 예상 궤적을 시각적으로 표시할 수 있습니다.
'UNITY > 유니티게임스쿨' 카테고리의 다른 글
포스트 프로세싱 (0) | 2024.07.30 |
---|---|
CSV Parser (0) | 2024.07.19 |
[유니티게임스쿨 TIL] 유니티 UI 이해 :: UI 스프라이트, 한글폰트 설정, 버튼 작성하기 (1) | 2024.06.10 |
[유니티게임스쿨 TIL] Unity 비동기 프로그래밍 :: Node.js 설치, 간단한 비동기 서버 구축 (0) | 2024.06.07 |
[유니티게임스쿨 TIL] 유니티 기본 :: 캐릭터 애니메이션 설정하기, 트리거 활용하기 (0) | 2024.06.05 |