특정 오브젝트를 기준으로 원 모양으로 퍼지는 탄환을 생성하는 방법이다.
int n = 10;
int speed = 150;
for (int i = 0; i < n; i++)
{
GameObject boltObj = Instantiate(boltPrefebs, player.transform.position + new Vector3(0, 0.3f),
Quaternion.Euler(0, 0, (360 * i / (n - 1)) + 180)); //투사체의 각도가 자연스럽게 회전값을 넣었다.
Vector2 dirVec = new Vector2(Mathf.Cos((Mathf.PI) * 2 * i / (n - 1)), Mathf.Sin((Mathf.PI) * i * 2 / (n - 1)));
//원을 기준으로 각각의 투사체마다 벡터를 정리
boltObj.GetComponent<Rigidbody2D>().AddForce(dirVec * speed);
}
위의 함수에서 n은 탄환의 갯수, speed는 탄환이 날라가는 속도를 뜻한다.
이를 조정할 경우
이러한 모습을 보인다.
또한 반원과 같은 형태로 퍼지게 하고싶으면 위의 코드에서 조금 수정하면 되는데
int n = 30;
int speed = 50;
for (int i = 0; i < n; i++)
{
GameObject boltObj = Instantiate(boltPrefebs, player.transform.position + new Vector3(0, 0.3f),
Quaternion.Euler(0, 0, (180 * i / (n - 1)) + 180)); //투사체의 각도가 자연스럽게 회전값을 넣었다.
Vector2 dirVec = new Vector2(Mathf.Cos((Mathf.PI) * i / (n - 1)), Mathf.Sin((Mathf.PI) * i / (n - 1)));
//원을 기준으로 각각의 투사체마다 벡터를 정리
boltObj.GetComponent<Rigidbody2D>().AddForce(dirVec * speed);
}
Math.Pi*2에서 2를 없애면 반원의 형태가 된다.
이처럼 코드를 짜고 진행하면
'게임엔진 > Unity' 카테고리의 다른 글
[Unity] 그래픽스 최적화 - 병목 (0) | 2023.08.12 |
---|---|
[Unity] 그래픽스 최적화 - 렌더링 파이프라인 (0) | 2023.08.12 |
[Unity] 내 주변을 원 운동하는 오브젝트 만들기 (0) | 2023.08.04 |
[Unity] Sprite Sheet (스프라이트 시트)를 사용한 2D 애니메이션 (0) | 2023.08.04 |
[Unity] 유니티 2D RPG 강좌 #1 - 스프라이트 설정하기 (0) | 2023.08.04 |