Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Движение кубика от одной точки до другой и обратно
- */
- using UnityEngine;
- public class PointLineMove : MonoBehaviour
- {
- public Transform startPoint; // компонент Transform начальной точки
- public Transform endPoint; // компонент Transform конечной точки
- public float speed; // скорость передвижения кубика
- public float nextPointDistance; // минимальное расстояние между кубиком и точкой, чтобы начать двигаться в противоположно направлении
- private string moveState = "FRONT"; // показывает направление, в котором двигается кубик
- private Transform transformComponent; // компонент Transform движущегося кубика
- private Vector3 moveDirection; // направление движения кубика
- void Start()
- {
- transformComponent = GetComponent<Transform>();
- // вычисляем направление, в котором должен двигаться кубик
- moveDirection = endPoint.position - startPoint.position; // вектор, начало которого - начальная точка, а конец - конечная точка
- moveDirection = moveDirection.normalized; // делаем так, чтобы его длина была 1, чтобы не мучаться со скоростью передвижения (можно рассказать про умножение вектора на число)
- transformComponent.position = startPoint.position; // устанавливаем кубик в начальное положение
- }
- void Update()
- {
- if(moveState == "FRONT")
- {
- transformComponent.position += moveDirection * speed;
- // если расстояние от кубика до конечной точки меньше минимального, то двигаемся обратно
- if(Vector3.Distance(transformComponent.position, endPoint.position) < nextPointDistance)
- {
- moveState = "BACK";
- }
- }
- if(moveState == "BACK")
- {
- transformComponent.position -= moveDirection * speed;
- // если расстояние от кубика до начальной точки меньше минимального, то двигаемся вперед
- if(Vector3.Distance(transformComponent.position, startPoint.position) < nextPointDistance)
- {
- moveState = "FRONT";
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement