← Каталог
Unity C# — скрипты для новичков — Патруль и преследование игрока
Фрагмент из «Unity C# — скрипты для новичков»: Патруль и преследование игрока.
using UnityEngine;
public class PatrolBetweenPoints : MonoBehaviour
{
[SerializeField] private Transform pointA;
[SerializeField] private Transform pointB;
[SerializeField] private float speed = 3f;
private Transform currentTarget;
void Start() => currentTarget = pointB;
void Update()
{
if (pointA == null || pointB == null) return;
transform.position = Vector3.MoveTowards(
transform.position,
currentTarget.position,
speed * Time.deltaTime);
if (Vector3.Distance(transform.position, currentTarget.position) < 0.05f)
currentTarget = currentTarget == pointA ? pointB : pointA;
}
} using UnityEngine;
public class PatrolBetweenPoints : MonoBehaviour
{
[SerializeField] private Transform pointA;
[SerializeField] private Transform pointB;
[SerializeField] private float speed = 3f;
private Transform currentTarget;
void Start() => currentTarget = pointB;
void Update()
{
if (pointA == null || pointB == null) return;
transform.position = Vector3.MoveTowards(
transform.position,
currentTarget.position,
speed * Time.deltaTime);
if (Vector3.Distance(transform.position, currentTarget.position) < 0.05f)
currentTarget = currentTarget == pointA ? pointB : pointA;
}
} using UnityEngine;
public class ChasePlayer : MonoBehaviour
{
[SerializeField] private Transform player;
[SerializeField] private float speed = 4f;
[SerializeField] private float stopDistance = 1.5f;
void Update()
{
if (player == null) return;
Vector3 toPlayer = player.position - transform.position;
toPlayer.y = 0f;
if (toPlayer.magnitude <= stopDistance) return;
transform.position += toPlayer.normalized * speed * Time.deltaTime;
transform.rotation = Quaternion.LookRotation(toPlayer);
}
} using UnityEngine;
public class ChasePlayer : MonoBehaviour
{
[SerializeField] private Transform player;
[SerializeField] private float speed = 4f;
[SerializeField] private float stopDistance = 1.5f;
void Update()
{
if (player == null) return;
Vector3 toPlayer = player.position - transform.position;
toPlayer.y = 0f;
if (toPlayer.magnitude <= stopDistance) return;
transform.position += toPlayer.normalized * speed * Time.deltaTime;
transform.rotation = Quaternion.LookRotation(toPlayer);
}
}