Godot 3D 人物血条实现
程序员文章站
2022-03-26 23:19:53
...
原理其实很简单,将3D模型的坐标转为屏幕坐标,然后实时更新UI(血条)即可,直接上关键代码:
func updateUI(delta):
#Update for UI
#人物的全局坐标
var world_pos = global_transform.origin
#这里的uiSize即为血条的UI控件大小
#camera = get_viewport().get_camera() 即为当前视图的摄像头
#通过unproject_position将3D坐标转为屏幕坐标,这里由于人物坐标位于中心,所以需要做一定的偏移
var pos = camera.unproject_position(world_pos) - 0.5 * uiSize
pos.y -= 20 + uiSize.y
#更新UI坐标
$Node2D/UnitView.position = pos
#$Node2D/UnitView.updateStatus(currentHP, currentMala)
pass
效果如下: