Ваш код уже близок к решению, но есть несколько вещей, которые можно улучшить. Во-первых, вы используете только ось X для движения, что может привести к дергающемуся движению. Во-вторых, вы используете Mathf.Abs(direction) < 20, что может быть не очень точным, так как это может привести к тому, что персонаж будет двигаться слишком быстро или слишком медленно.
Вот исправленный код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class EnemyFollow : MonoBehaviour
{
GameObject player;
const float speedMove = 30.0f;
void Start()
{
player = GameObject.FindWithTag("Player");
}
void Update()
{
float direction = player.transform.position - transform.position;
direction.Normalize();
Vector3 pos = transform.position;
pos += direction \* speedMove \* Time.deltaTime;
transform.position = pos;
}
}
Яро Князь КнязьковУченик (112)
8 месяцев назад
Извините, я когда вставил код, у меня нет никаких ошибок, но не включается компилятор... Подскажите в чём проблема, пожалуйста...
Сейчас код такой:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class EnemyFollow : MonoBehaviour
{
GameObject player;
const float speedMove = 30.0f;
void Start()
{
player = GameObject.FindWithTag("Player");
}
void Update()
{
float direction = player.transform.position.x - transform.position.x;
if (Mathf.Abs(direction) < 20)
{
Vector3 pos = transform.position;
pos.x += Mathf.Sign(direction) * speedMove * Time.deltaTime;
transform.position = pos;
}
}
}
Он двигается только по оси X, и всё время дёргается.