12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class EnemyFollowPath : MonoBehaviour //для передвижения врага по заданному пути с возможностью выбора видов врага
- {
- public enum MovementType //типы передвижения
- {
- Walking,
- Flying,
- Jumping
- }
- public MovementType Type = MovementType.Walking; //вид движения
- public EnemyPatrolling MyPath; //используемый путь
-
- public float MaxDistance = .1f; //максимальная дистанция подхода к точке
-
- private WalkingEnemyMoving walkingEnemy; //для обращения к скрипту задающему движение врагу
- public IEnumerator<Transform> pointInPath; //проверка точек
-
- void Start()
- {
-
- if(MyPath == null) //проверяет прикрепили ли путь
- {
- return;
- }
- pointInPath = MyPath.GetNextPathPoint();
- pointInPath.MoveNext(); //получение следующей точки в пути
- if(pointInPath.Current == null) //есть ли точки к которой передвигаться
- {
- return;
- }
- transform.position = pointInPath.Current.position; //обьект встает на стартовую точку пути
- if(Type == MovementType.Walking) //если тип врага обычный получаем компонент с нужным типом передвижения
- {
- walkingEnemy = GetComponent<WalkingEnemyMoving>();
- }
-
- }
-
- void Update()
- {
-
- if (pointInPath == null || pointInPath.Current == null) //проверка отсутствия пути
- {
- return;
-
- }
- if (Type == MovementType.Walking) //если выбран этот вид
- {
- walkingEnemy.EnemyMoving(pointInPath); //вызываем функцию передвижения для этого вида
- }
- else if (Type == MovementType.Flying)
- {
- }
- else if (Type == MovementType.Jumping)
- {
- }
- var distanceSqure = (transform.position - pointInPath.Current.position).sqrMagnitude; //проверка достаточно ли мы близко к точке чтобы двигаться к следующей точке
- if (distanceSqure < MaxDistance * MaxDistance) //достаточно ли мы близко к точке?
- {
- pointInPath.MoveNext(); //движемся к следующей точке
- }
-
-
-
- }
- }
|