Returns a copy of vector
with its magnitude clamped to maxLength
.
// Move the object around with the arrow keys but confine it // to a given radius around a center point. var centerPt: Vector3; var radius: float; function Update() { // Get the new position for the object. var movement = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); var newPos = transform.position + movement; // Calculate the distance of the new position from the center point. Keep the direction // the same but clamp the length to the specified radius. var offset = newPos - centerPt; transform.position = centerPt + Vector3.ClampMagnitude(offset, radius); }
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public Vector3 centerPt; public float radius; void Update() { Vector3 movement = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); Vector3 newPos = transform.position + movement; Vector3 offset = newPos - centerPt; transform.position = centerPt + Vector3.ClampMagnitude(offset, radius); } }