Interpolated movement in a circle

so far I have a shield that you can move around the player and point any direction, and it faces the right direction and everything, Excellent! However the shield just teleports to wherever the stick is pointing rather than rotating into the new position.

I’ve tried lerping and slerping to make it happen but all it does is move in a line to the new place cutting through the player rather than moving in s smooth circle around them as it would if you rotated the stick

Here’s the working code I’m using so far, appreciate any help you could give thanks!

edit: In case it’s not obvious I’m doing this in 2D mode :slight_smile:

public class ShieldMovement : MonoBehaviour {

public Transform target; //player shield is attaced to

float distance = 0.8f; // distance from player so it doesn't clip
Vector3 direction = Vector3.up;

// Use this for initialization
void Start () {
		
}

// Update is called once per frame
void Update () {

	float angle = Mathf.Atan2 (Input.GetAxisRaw("rightH"), Input.GetAxisRaw("rightV"))* Mathf.Rad2Deg;

	if(Mathf.Abs(Input.GetAxis("rightH")) > 0.15f || Mathf.Abs(Input.GetAxis("rightV")) > 0.15f)
	{
		direction =  new Vector3(Input.GetAxis("rightH"),Input.GetAxis("rightV"), 0.0f ) ;
	}

	Ray ray = new Ray(target.position, direction);
	transform.position = ray.GetPoint(distance);
	
	if(Mathf.Abs(Input.GetAxis("rightH")) > 0.15f || Mathf.Abs(Input.GetAxis("rightV")) > 0.15f)
	{
		transform.rotation = Quaternion.AngleAxis(angle,Vector3.forward*-1);
	}

}

}

I think you are close, but what you would want to do is a quaternion.lerp after the if on line 25, rather than just directly set the rotation. Like

if(Mathf.Abs(Input.GetAxis("rightH")) > 0.15f || Mathf.Abs(Input.GetAxis("rightV")) > 0.15f)
     {
var newAngle = Quaternion.AngleAxis(angle,Vector3.forward*-1);
var lerpAngle = Quaternion.Lerp(transform.rotation, newAngle, .5f * time.DeltaTime);
         transform.rotation = lerpAngle;
     }

I think that would do what you want. You’ll have to adjust the speed to your liking;. you might also want to skip the lerp at a certain point when it gets close to where you want it,