Изображение пользовательского интерфейса, зажатое в Unity, дрожит - PullRequest
1 голос
/ 28 мая 2020

Я использую следующий скрипт, чтобы прикрепить изображение пользовательского интерфейса к игроку в 2D-игре, но когда игрок движется, изображение немного дрожит. Что я делаю не так?

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

public class HealthBarClamp : MonoBehaviour
{

    public Transform targetToFollow;
    Transform thisTransform;   

    void Start()
    {
        thisTransform = transform;
    }


    void Update()
    {
        thisTransform.position = new Vector3(targetToFollow.position.x, 
            targetToFollow.position.y + 1.5f, thisTransform.position.z); 
    }
}

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Вы можете попытаться сделать полоску здоровья дочерней по отношению к вашей цели в иерархии gameObject, чтобы она двигалась вместе с ней без необходимости обновлять свою позицию в скрипте. Затем вы можете включить / отключить полосу здоровья в зависимости от ваших потребностей, если вам нужно, чтобы она была видна или нет

0 голосов
/ 28 мая 2020

Если вы перемещаете целевой объект, используя физику или FixedUpdate, вам также нужно будет перемещать камеру в FixedUpdate. Update происходит в каждом кадре, быстро или медленно, тогда как FixedUpdate - это имитация , которая происходит через определенные интервалы, чтобы не дать физическим расчетам сходить с ума. Если вы переместите камеру в Update, а цель в FixedUpdate, вы получите крошечные различия, которые будут выглядеть как тряска.

(Или вы можете следовать советам, данным в комментариях. Это отлично работает, чтобы сделать элемент пользовательского интерфейса дочерним по отношению к движущемуся объекту, хотя я лично предпочитаю делать это так, как вы это делали изначально, потому что это упрощает такие вещи, как «плавное» движение камеры.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...