30 lines
922 B
C#

using UnityEngine;
public class MoveInCircle : MonoBehaviour
{
[SerializeField] private float radius = 2f; // Radius of the circular movement
[SerializeField] private float speed = 2f; // Speed of circling
[SerializeField] private bool clockwise = true; // Direction toggle
private float angle = 0f; // Angle for movement
private Vector3 startLocalPosition;
void Start()
{
startLocalPosition = transform.localPosition; // Store the initial local position
}
void Update()
{
// Increment angle based on speed and direction
angle += (clockwise ? -1 : 1) * speed * Time.deltaTime;
// Calculate new local position
float x = Mathf.Cos(angle) * radius;
float z = Mathf.Sin(angle) * radius;
// Apply the new position relative to the parent
transform.localPosition = startLocalPosition + new Vector3(x, 0, z);
}
}