public void MoveToNextPoint(WalkerEntity walker) { var curPosition = walker.Object.transform.position; var path = walker.Component.PathComponent.Path; if ((walker.Component.NextPointId >= path.Count || walker.Component.NextPointId < 0) && walker.Component.PathComponent.IsLooped) { walker.Component.Direction = -walker.Component.Direction; walker.Component.NextPointId += 2 * walker.Component.Direction; } else if (walker.Component.NextPointId >= path.Count && !walker.Component.PathComponent.IsLooped) { return; } var nextPosition = walker.Component.PathComponent.Path[walker.Component.NextPointId]; if (Vector3.Distance(curPosition, nextPosition) > minDistance && !walker.Component.IsMoving) { walker.Agent.SetDestination(nextPosition); } else if (Vector3.Distance(curPosition, nextPosition) <= minDistance) { walker.Component.NextPointId += walker.Component.Direction; walker.Agent.SetDestination(nextPosition); } }
public static void SetMovementParameters(this WalkerEntity walker) { var pathComponent = walker.Component.PathComponent; var pathLength = walker.Component.PathComponent.Path.GetLengthOfPath(); walker.Agent.speed = pathLength / pathComponent.FinishTime; walker.Agent.acceleration = walker.Agent.speed * accelerationFactor; }
public void Start() { prefabsHolder = GameObject.Find("PrefabsHolder").GetComponent <PrefabsHolder>(); //YandexDiskHelper.SaveFile(fileUri, "path2.txt"); var pathComponent = FileDeserializer.DeserializeFile("path2.txt"); walker = new WalkerEntity(pathComponent); var walkerObj = Instantiate(prefabsHolder.WalkerPrefab, startPosition, Quaternion.identity); walker.Object = walkerObj; movementSystem = new MovementSystem(); walker.Component.PathComponent.Path.AlignPointsByHeight(minHeight); walker.SetMovementParameters(); var visualization = new PathVisualization(); visualization.VisualizePath(pathComponent.Path, prefabsHolder); }