Для реализации движения врага в Unity 2D можно использовать следующий алгоритм:
1. Создайте пустой объект в Hierarcy и добавьте к нему компонент Rigidbody2D. Это позволит врагу двигаться в физическом пространстве.
2. Создайте скрипт, прикрепите его к объекту-врагу и откройте его для редактирования.
3. В скрипте объявите переменные для хранения скорости движения врага и направления его движения:
```csharp
public float moveSpeed = 5f; // Скорость движения врага
private int direction = 1; // Направление движения (1 - вверх, -1 - вниз)
```
4. В методе Update скрипта реализуйте движение врага. Для этого используйте компонент Rigidbody2D:
```csharp
void Update()
{
// Создаем вектор направления движения
Vector2 movement = new Vector2(0, direction) * moveSpeed * Time.deltaTime;
// Применяем движение к Rigidbody2D
GetComponent<Rigidbody2D>().MovePosition(GetComponent<Rigidbody2D>().position + movement);
}
```
5. Добавьте дополнительную проверку для изменения направления движения врага, когда он достигает верхней или нижней границы игрового поля:
```csharp
void Update()
{
// Определяем, достиг ли враг верхней или нижней границы
if (transform.position.y >= 5f)
{
direction = -1; // Меняем направление на вниз
}
else if (transform.position.y <= -5f)
{
direction = 1; // Меняем направление на вверх
}
// Создаем вектор направления движения
Vector2 movement = new Vector2(0, direction) * moveSpeed * Time.deltaTime;
// Применяем движение к Rigidbody2D
GetComponent<Rigidbody2D>().MovePosition(GetComponent<Rigidbody2D>().position + movement);
}
```
6. Теперь враг будет двигаться вверх и вниз между границами -5 и 5 по оси y. Вы можете настроить эти значения в соответствии со своими требованиями.
Надеюсь, это поможет вам реализовать движение врага в Unity 2D!