Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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);
        }