при повороте враг поворачивается и телепортируется через некоторое расстояние(враг двигается по двум заданным точкам)
тепехается за точку, чуть дальше неё
вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyPatrol : MonoBehaviour
{
[Header("Patrol points")]
[SerializeField] private Transform leftEdge;
[SerializeField] private Transform rightEdge;
[Header("Enemy")]
[SerializeField] private Transform enemy;
[Header("Movement parameters")]
[SerializeField] private float speed;
private Vector3 initScale;
private bool movingLeft;
private void Awake()
{
initScale = enemy.localScale;
}
private void Update()
{
if (movingLeft)
{
if (enemy.position.x >= leftEdge.position.x)
MoveInDirection(-1);
else
DirectionChange();
}
else
{
if (enemy.position.x <= rightEdge.position.x)
MoveInDirection(1);
else
DirectionChange();
}
}
private void DirectionChange()
{
movingLeft = !movingLeft;
}
private void MoveInDirection(int _direction)
{
enemy.localScale = new Vector3(Mathf.Abs(initScale.x) * _direction, initScale.y, initScale.z);
enemy.position = new Vector3(enemy.position.x + Time.deltaTime * _direction * speed, enemy.position.y, enemy.position.z);
}
}