Код: Выделить всё
public Transform target;
public float chaseSpeed = 5f;
public float chaseRotationSpeed = 5f;
public float followDistance = 2f;
private Transform spotlight;
Код: Выделить всё
void Start()
{
// Cache the spotlight reference
spotlight = GameObject.Find("Spot Light").transform;
}
Код: Выделить всё
void Update()
{
if (isChasing)
{
ChasePlayer();
}
}
Код: Выделить всё
void ChasePlayer()
{
autoMove = false;
// Calculate the target position to keep a certain distance from the player
Vector3 targetPosition = player.position - (player.position - transform.position).normalized * followDistance;
transform.position = Vector3.MoveTowards(transform.position, targetPosition, chaseSpeed * Time.deltaTime);
// Smoothly rotate the spotlight to look at the player
Vector3 lightDirection = player.position - transform.position;
Quaternion lightRotation = Quaternion.LookRotation(lightDirection);
if (spotlight != null)
{
spotlight.rotation = Quaternion.Slerp(spotlight.rotation, lightRotation, Time.deltaTime * chaseRotationSpeed);
}
}
но если, например, я изменю переменную ChaseRotationSpeed на 100, по какой-то причине дрон меняет положение и прилипает к игроку. дрон находится на позиции игрока. но ChaseRotationSpeed должен только вращать дочерний прожектор, а не менять положение дрона.
если я не попытаюсь изменить ChaseRotationSpeed, тогда прожектор никогда не будет вращаться достаточно и никогда не будет направлен на плеер.
дочерний объект точечного света никогда не вращается. вращение прожектора остается на 0,0,0
и сам дрон никогда не следует за игроком сзади.
скрипт прикреплен к основному объекту (конусу). .

и скриншот дрона и игрока. дрон и прожектор даже близко не находятся позади игрока и не заметили игрока.
дрон и прожектор находятся перед игроком и никогда не вращаются, глядя на игрока . они движутся, когда я перемещаю игрока, но никогда не следую и не замечаю.

Подробнее здесь: https://stackoverflow.com/questions/785 ... otating-sm