В моих планах - кликнуть пкм на врага, чтобы персонаж подбежал к врагу и, когда игрок к нему уже будет подбегать, чтобы бежал не к его прошлому местоположению и пробегал сквозь него (Враг при опр. расстоянии начинает идти на перса), а именно к врагу. Пока у меня получилось, как не нужно было бы(Он бежит на его прежнее местоположение).:
void Update () {
if (Input.GetMouseButton(1))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, Mathf.Infinity))
if (hit.collider.CompareTag("Enemy"))
{
target = hit.transform;
transform.LookAt(target);
tPosition = hit.point;
GetComponent<NavMeshAgent>().SetDestination(tPosition);
}
}
Во-первых, сохраните компонент NavMeshAgent вашего персонажа в методе Start() в отдельную переменную, чтобы не выполнять в каждом Update() метод GetComponent<>, так как он довольно дорогостоящий.
Например:
NavMeshAgent navAgent;
void Start(){
// это называется кэшированием компонента
navAgent = GetComponent<NavMeshAgent>();
}
Во-вторых, модифицируйте ваш код таким образом, чтобы если вы кликнули на врага, его компонент transform сохранялся в отдельную переменную, например Transform enemyTransoform.
Далее добавьте следующий код в метод Update(), перед обработкой клика :
if (enemyTransoform != null)
{
transform.LookAt(target);
navAgent.SetDestination(tPosition);
}
Таким образом вы будете в каждом Update() корректировать путь вашего персонажа.
Также, чтобы ваш персонаж не проходил сквозь врага, можно добавить вычисление расстояния до противника и сравнивать его с некой удобной вам констаной, например радиусом NavMeshAgent вашего персонажа. Если расстояние будет меньше, чем этот радиус останавливайте персонажа и выполняйте другие действия (например атака или что бы вы не захотели).
Продвижение своими сайтами как стратегия роста и независимости