fr0stn1k

Unity3(Task4)_Kovylov

Mar 8th, 2018
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.06 KB | None | 0 0
  1. using System;
  2. using UnityEngine;
  3.  
  4.  
  5. public class BetweenPoints : MonoBehaviour
  6. {
  7.     public Vector3[] points =
  8.     {
  9.         new Vector3(0.0f, 0.0f , 0.0f),
  10.         new Vector3(0.0f, 2.0f , 0.0f),
  11.         new Vector3(1.0f, 1.5f , 0.0f),
  12.     };
  13.     public float speed = 1;
  14.     private int _iterator;
  15.     private float _path;
  16.    
  17.     // Update is called once per frame
  18.     void Update ()
  19.     {
  20.         // Переменная содержащая путь (Скорость * deltaTime)
  21.         _path = Time.deltaTime * speed;
  22.  
  23.        
  24.         if (!isReachedPoint(_iterator))// Если объект не достиг точки, то двигайся к ней
  25.         {
  26.             MoveToPoint(_iterator);
  27.         }
  28.         if (isReachedPoint(_iterator) && _iterator != points.Length - 1) // Если объект достиг точки и это не последний вектор в списке,
  29.         {                                                               // то увеличивай итератор
  30.             _iterator++;
  31.         }
  32.         else if (isReachedPoint(points.Length - 1))// Предыдущее условие неверно и это последний объект,
  33.         {                                          // то возвращаемся к исходной точке
  34.             _iterator = 0;
  35.         }
  36.     }
  37.  
  38.     // Проверка достижения координат с некоторой погрешностью из-за использования transform.Translate
  39.     private bool isReachedPoint(int i)
  40.     {
  41.         return Math.Abs(transform.position.x - points[i].x) <= 0.1f
  42.                && Math.Abs(transform.position.y - points[i].y) <= 0.1f
  43.                && Math.Abs(transform.position.z - points[i].z) <= 0.1f;
  44.  
  45.     }
  46.     // Фукнция запускающая перемещение объекта с параметром в виде итератора массива векторов
  47.     private void MoveToPoint(int i)
  48.     {
  49.         transform.Translate((points[i] - transform.position).normalized * _path);
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment