박민혁의 개발

플레이어주변을돌아가는 투사체 본문

TIL

플레이어주변을돌아가는 투사체

박민혁_kog 2023. 11. 2. 21:16
public class A3107 : MonoBehaviour
{
    // Start is called before the first frame update
    int objSize;// 돌아가는 투사체 갯수
    public float circleR=1f; //반지름
    public float deg; //각도
    public float objSpeed= 20f; //원운동 속도
    public GameObject[] target;

    private void Start()
    {
        objSize = target.Length;
    }
    void Update()
    {
        deg += Time.deltaTime * objSpeed;
        if (deg < 360)
        {
            for (int i = 0; i < objSize; i++)
            {
                var rad = Mathf.Deg2Rad * (deg + (i * (360 / objSize)));
                var x = circleR * Mathf.Sin(rad);
                var y = circleR * Mathf.Cos(rad);
                target[i].transform.position = transform.position + new Vector3(x, y);
                target[i].transform.rotation = Quaternion.Euler(0, 0, (deg + (i * (360 / objSize))) * -1);
            }

        }
        else
        {
            deg = 0;
        }

    }
}

위와 같은 식으로 사용 

 

불이 1개 처럼 보이지만 같은위치에 3개가 겹쳐있다 코드가 타겟 오브젝트 갯수만큼 나눠서 위치값을 조절해주기에 초기 위치값을 바꿀필요가 없다 플레이어안에 넣어줄시 나이스 나이스

 

gif로 올리면 좋겠지만 생략한다 위 코드 로테이션 부분이 가운데로 보게 위치를 바꿔줌