using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class Tester : MonoBehaviour
{
[SerializeField] List<Transform> _allPoint=new List<Transform>();
Transform _targetPos;
[SerializeField] Transform _playerPos;
[SerializeField] float _playerTargetDis;
[SerializeField] float _stopDistans;
[SerializeField] float _speed;
bool _isToPlayer;
private void Start()
{
SetAllPoint();
_targetPos = SelectRandom();
}
void SetAllPoint()
{
foreach (GameObject t in GameObject.FindGameObjectsWithTag("Point"))
{
_allPoint.Add(t.transform);
}
}
Transform SelectRandom()
{
int rand = Random.Range(0, (_allPoint.Count));
Debug.Log(rand);
return _allPoint[rand];
}
private void Update()
{
if (_isToPlayer) MoveToPlayer();
else MoveToPoint();
}
private void FixedUpdate()
{
_isToPlayer = SeePlayer();
}
void MoveToPoint()
{
transform.position = Vector3.MoveTowards(transform.position, _targetPos.position, _speed * Time.deltaTime); //заменить мб движение по нашмешу
if(Vector3.Distance(transform.position, _targetPos.position) < _stopDistans) _targetPos = SelectRandom();
}
void MoveToPlayer()
{
transform.position = Vector3.MoveTowards(transform.position, _playerPos.position, _speed * Time.deltaTime);
}
bool SeePlayer() //тут это от проекта зависит я сделал от дальности без поля зрения и тд
{
if (Vector3.Distance(transform.position, _playerPos.position) > _playerTargetDis) return false;
return true;
}
}
ну это самое простое решение, мало вводных как объект перемещает мб навмешь и тд плюс надо подумать поле зрения и тд