Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using UnityEngine;
- public class ToPointAndBack : MonoBehaviour
- {
- private Vector3 _startVector3;
- public Vector3 _targetVector3 = new Vector3(0, 1, 0);
- private Vector3 _movingVector3;
- public float speed = 1;
- private float _path;
- void Start()
- {
- // Сохранение изначальной позиции в стартовый вектор
- _startVector3 = transform.position;
- //Сохранение вектора Б в вектор движения
- _movingVector3 = _targetVector3;
- }
- // Update is called once per frame
- void Update ()
- {
- // Переменная содержащая путь (Скорость * deltaTime)
- _path = speed * Time.deltaTime;
- // Вызов функции движения
- MoveToPoint();
- // Проверка достижения точки вектора Б и назначение целью вектор А
- if (isReachedPoint(_targetVector3))
- _movingVector3 = _startVector3;
- // Проверка достижения точки вектора А и назначение целью вектор Б
- if (isReachedPoint(_startVector3))
- _movingVector3 = _targetVector3;
- }
- // Проверка достижения координат с некоторой погрешностью из-за использования transform.Translate
- private bool isReachedPoint(Vector3 vector3)
- {
- return Math.Abs(transform.position.x - vector3.x) <= 0.1f
- && Math.Abs(transform.position.y - vector3.y) <= 0.1f
- && Math.Abs(transform.position.z - vector3.z) <= 0.1f;
- }
- // Фукнция запускающая перемещение объекта, использующий вектор промежуточного хранения направления _movingVector3
- private void MoveToPoint()
- {
- transform.Translate((_movingVector3 - transform.position).normalized * _path);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment