Как сделать так, чтобы объект следовал за игроком, а прожектор вращался и плавно освещал игрока?C#

Место общения программистов C#
Anonymous
Как сделать так, чтобы объект следовал за игроком, а прожектор вращался и плавно освещал игрока?

Сообщение Anonymous »

в верхней части скрипта я добавил эти переменные.

Код: Выделить всё

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();
}
}
и метод 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

Вернуться в «C#»