Как сделать задержку фонарика в Unity?

Не могу нигде найти, как сделать что бы spotlight прикрепренный к камере, плавно перемщался при повороте камеры. Что бы была небольшая задержка, тоже самое можно было бы сделать с руками как в шутерах например.


Ответы (2 шт):

Автор решения: Риксед

Если spotlight дочерний обьект камеры, то отдели его. Добавь на spotlight этот скрипт:

  void FixedUpdate() {
    StartCoroutine(moveMe());
  }
  IEnumerator moveMe() {
    yield return new WaitForSeconds(0.25f); //0.25f это задержка, желательно её делать не более 0.5f
    transform = Camera.main.transform; //тут позиция, размер, поворот становятся как у камеры
  }

Можно заменить FixedUpdate на Update, но тогда сглаживание будет зависить от FPS.

→ Ссылка
Автор решения: Eugenio Uglov

Можете попробовать прикрепить этот код к фонарику. Функция MoveToward позволяет сделать плавное перемещение, но установить условие срабатывания только при повороте камеры.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestMovement : MonoBehaviour
{
    private int speed = 10;
    private int offsetFromCamera = 1;
    
    void Update()
    {
        var step =  speed * Time.deltaTime;
        Vector3 targetPoistion = new Vector3(Camera.main.transform.position.x, 
            Camera.main.transform.position.y, Camera.main.transform.position.z + 10);

        transform.position = Vector3.MoveTowards(transform.position, targetPoistion, step);
    }
}
→ Ссылка