Как сделать задержку фонарика в 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);
}
}