{"id":54,"date":"2013-03-20T22:03:18","date_gmt":"2013-03-20T22:03:18","guid":{"rendered":"http:\/\/lotecsoftware.com\/unity\/blog\/?page_id=54"},"modified":"2013-03-20T22:03:18","modified_gmt":"2013-03-20T22:03:18","slug":"waypointsmover","status":"publish","type":"page","link":"http:\/\/lotecsoftware.com\/unity\/blog\/?page_id=54","title":{"rendered":"WaypointsMover"},"content":{"rendered":"\n<pre class=\"lang:c# decode:true \" >\/**\r\n * Attach to object. Moves object between waypoints.\r\n *\/\r\nusing UnityEngine;\r\nusing System.Collections;\r\n \r\npublic class WaypointsMover : MonoBehaviour {\r\n    public Transform[] waypoints;\r\n    public float waypointRadius = 1.0f;\r\n    public bool loop = true;\r\n    public float speed = 2.0f;\r\n\t\r\n    private Vector3 currentHeading,targetHeading;\r\n    private int targetwaypoint;\r\n    private Transform _transform;\r\n\r\n    protected void Start () {\r\n\t\tenabled = false;\r\n        _transform = transform;\r\n        if(waypoints.Length &lt;= 0) {\r\n            Debug.Log(\"No waypoints on \" + name);\r\n            enabled = false;\r\n        }\r\n        targetwaypoint = 0;\r\n    }\r\n \r\n    protected void Update() {\r\n        if(Vector3.Distance(_transform.position, waypoints[targetwaypoint].position) &lt;= waypointRadius) {\r\n            targetwaypoint++;\r\n            if(targetwaypoint &gt;= waypoints.Length) {\r\n                targetwaypoint = 0;\r\n                if(!loop)\r\n                    enabled = false;\r\n            }\r\n        }\r\n\t\t_transform.position = Vector3.MoveTowards(_transform.position, waypoints[targetwaypoint].position, Time.deltaTime * speed);\r\n    }\r\n\r\n    \/\/ Draws red line between waypoints, and sphere with radius\r\n    public void OnDrawGizmos() {\r\n        if(waypoints == null)\r\n            return;\r\n\t\t\r\n        for(int i=0;i&lt; waypoints.Length;i++) {\r\n    \t    Gizmos.color = new Color(0.9f, 0, 0, 0.3f);\r\n\t\t\tGizmos.DrawSphere(waypoints[i].position, waypointRadius);\r\n\t        Gizmos.color = Color.red;\r\n            Vector3 pos = waypoints[i].position;\r\n            if(i&gt;0) {\r\n                Vector3 prev = waypoints[i-1].position;\r\n                Gizmos.DrawLine(prev,pos);\r\n            }\r\n        }\r\n    }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\/** * Attach to object. Moves object between waypoints. *\/ using UnityEngine; using System.Collections; public class WaypointsMover : MonoBehaviour { public Transform[] waypoints; public float waypointRadius = 1.0f; public bool loop = true; public float speed = 2.0f; private Vector3 currentHeading,targetHeading; private int targetwaypoint; private Transform _transform; protected void Start () { enabled = false; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/lotecsoftware.com\/unity\/blog\/index.php?rest_route=\/wp\/v2\/pages\/54"}],"collection":[{"href":"http:\/\/lotecsoftware.com\/unity\/blog\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/lotecsoftware.com\/unity\/blog\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/lotecsoftware.com\/unity\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/lotecsoftware.com\/unity\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=54"}],"version-history":[{"count":1,"href":"http:\/\/lotecsoftware.com\/unity\/blog\/index.php?rest_route=\/wp\/v2\/pages\/54\/revisions"}],"predecessor-version":[{"id":55,"href":"http:\/\/lotecsoftware.com\/unity\/blog\/index.php?rest_route=\/wp\/v2\/pages\/54\/revisions\/55"}],"wp:attachment":[{"href":"http:\/\/lotecsoftware.com\/unity\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}