- Home /
Question by
wethings · Jan 17 at 09:30 AM ·
rotatearound
Clamp RotateAround with 2 axis
Hi, trying to make an object rotator thats based on camera view. Quite stumped on getting clamping to work for the XZ-axis
Vector2 oldPos = Vector2.zero;
void Update()
{
if(Input.GetMouseButtonDown(0))
oldPos = Input.mousePosition;
if (Input.GetMouseButton(0))
{
Vector2 delta = (Vector2)Input.mousePosition - oldPos;
oldPos = Input.mousePosition;
float lookSpeed = 20f;
//Rotate Y-axis
transform.Rotate(Vector3.down, delta.x * lookSpeed * Time.deltaTime, Space.Self);
//Clamp first?
float angle = Vector3.Angle(Vector3.forward, transform.forward);
print("angle " + angle);
float rotAng = delta.y * lookSpeed * Time.deltaTime;
float min = 20f;
float max = 50f;
float clamped = Mathf.Clamp(angle + rotAng, min, max);
rotAng = clamped - angle;
//Rotate XZ-axis
transform.RotateAround(transform.position, Camera.main.transform.right, rotAng);
}
}
Comment