Aqui está o que eu quero alcançar, barras de saúde que ficam perfeitamente acima das unidades, independentemente de onde a unidade se transfer ou para onde está a câmera: https://www.youtube.com/stay/fzsapdz-gjc?si=b868wwf5kapcuetw&t=3305
Eu tentei todo tipo de coisa, tanto tendo minha tela no espaço mundial e no espaço de tela.
Em espaço mundial Não consigo fazer com que minha tela permaneça corretamente em posição acima da unidade, sempre voltada para a câmera.
remodel.rotation = Quaternion.LookRotation(remodel.place - Digicam.foremost.remodel.place);
Eu também tentei sem – câmera.foremost.remodel.Place e também com +, em vez disso, nada tem o resultado desejado e não consigo entender meu cérebro em torno de tudo isso funciona. Outra coisa que tentei é isso, com e sem o Y congelado.
Vector3 ahead = _cam.remodel.ahead;
ahead.y = 0;
ahead.Normalize();
healthbarCanvas.remodel.ahead = ahead;
Isso faz com que as bordas da minha barra de saúde subam/descem à medida que a câmera se transfer, não fica horizontal como deveria.
Em Espaço de tela Cheguei bem perto, mas ainda está se movendo um pouco quando estou movendo minha câmera e a barra de saúde também fica maior/menor à medida que o zoom dentro/saída.
public override void OnLateUpdateView()
{
Vector3 offset = new Vector3(0, 3.5f, 0);
Vector3 worldPos = remodel.place + offset;
Vector3 screenPos = _cam.WorldToScreenPoint(worldPos);
healthbar.remodel.place = screenPos;
}
Eu tentei várias variações, como congelar a rotação y, congelando a rotação Z, mas nada funciona exatamente como eu preciso que funcione.
Quero barras de saúde que fiquem exatamente acima da minha unidade à medida que ela se transfer no espaço 3D, independentemente da posição da câmera, ângulo ou zoom. Exatamente como as barras de saúde em League of Legends acima dos campeões e lacaios trabalham.
Como sugerido, tentei:
remodel.rotation = Quaternion.LookRotation(digital camera.ahead, digital camera.up);
O que resulta nisso: de longe:
