// GDnD wiki example // Demonstrates: driving a Vehicle2D toward a target or the mouse position // Related pages: [[steering-behaviours]], [[overview-unity-nature-of-code-examples]] using UnityEngine; [RequireComponent(typeof(Vehicle2D))] public class SeekArriveDemo : MonoBehaviour { [SerializeField] private Transform target; [SerializeField] private bool targetFollowsMouse = true; [SerializeField] private bool useArrive = true; private Camera cachedCamera; private Vehicle2D vehicle; private void Awake() { vehicle = GetComponent(); cachedCamera = Camera.main; } private void Update() { Vector2 targetPosition = ResolveTargetPosition(); Vector2 steering = useArrive ? vehicle.Arrive(targetPosition) : vehicle.Seek(targetPosition); vehicle.ApplyForce(steering); } private Vector2 ResolveTargetPosition() { if (target != null) { return target.position; } if (!targetFollowsMouse || cachedCamera == null) { return vehicle.Position; } Vector3 mouse = Input.mousePosition; mouse.z = Mathf.Abs(cachedCamera.transform.position.z); Vector3 world = cachedCamera.ScreenToWorldPoint(mouse); world.z = 0f; return world; } }