특정 오브젝트를 기준으로 원 모양으로 퍼지는 탄환을 생성하는 방법이다.
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를 없애면 반원의 형태가 된다.
이처럼 코드를 짜고 진행하면
이런식으로 적용이 된 것을 볼 수 있다.
'유니티' 카테고리의 다른 글
[유니티] 일정한 속도로 회전하는 오브젝트 만들기 (0) | 2022.05.05 |
---|---|
[유니티] 일정 시간 후에 자동으로 사라지는 오브젝트 만들기 (0) | 2022.05.05 |
[유니티] 코루틴(Coroutine)에 대해 알아보자 (0) | 2022.05.04 |
[유니티] 진행이 불가능 할 때 방향을 스스로 바꾸는 오브젝트 만들기 (0) | 2022.05.02 |
[유니티] 내 주변을 원 운동하는 오브젝트 만들기 (2) | 2022.04.28 |