Unity 공전하는 오브젝트 구현

이시율·2025년 7월 1일

공전하는 오브젝트를 구현하기 위해
가로 반지름, 세로 반지름, 각도, 속도, 기준이 되는 주체가 필요하다

 spheres = new GameObject[count];
        for (int i = 0; i < count; i++)
        {
            spheres[i] = ObjectPoolManager.Instance.Get(typeof(Orbiter));

            float offset = (2 * Mathf.PI / count) * i; // 생성 시 각도

            Orbiter orbit = spheres[i].GetComponent<Orbiter>();

            orbit.radiusX = radiusX;
            orbit.radiusY = radiusY;
            orbit.speed = rotationsPerSecond;
            orbit.angleOffset = offset;
            orbit.onHit = onHit;
            .
            .
            .
            orbit.homming = homming;
            orbit.transform.localScale = transform.localScale;
            orbit.GetComponent<SpriteRenderer>().sprite = tempSprite;
            orbit.transform.position = PlayerSkillManager.Instance.transform.position;
            orbit.Init();
        }

        ObjectPoolManager.Instance.Return(this.gameObject, typeof(MagicRevolve));

위와 같이 설정 값을 생성하는 object에 주입하고
Orbiter를 가지는 object는 해당 값으로 공전하게된다.

angle += speed * 2f * Mathf.PI * Time.deltaTime; // 초당 회전 각도 누적

            float totalAngle = angle + angleOffset;

            float x = radiusX * Mathf.Cos(totalAngle);
            float y = radiusY * Mathf.Sin(totalAngle);

            transform.position = PlayerSkillManager.Instance.transform.position + new Vector3(x, y, 0f);

0개의 댓글