编辑器踩坑 --- 世界UI

[复制链接]
1451 |14
Othanse 发表于 2023-3-17 18:07:46 | 显示全部楼层
天胡街输牌大王 发表于 2023-3-17 18:04
可是空间类型枚举只有3个 世界空间不会跟着相机转动 屏幕空间跟头顶UI一样 不会被场景中的物体挡住哎 ...

所以这个需求是需要一个客户端每个人自己看到这个UI都是面向自己的,每个客户端自己计算玩家位置和更改UI的朝向对吧;
目前编辑器还未提供封装好的,需要自己计算一下哈,我们记录下这个需求
回复

使用道具 举报

空伊伊 发表于 2023-3-17 18:27:17 | 显示全部楼层


这个效果看看怎么样,代码很简单,就是让世界UI的旋转一直对着玩家。代码你还可以优化的
使用方式只需要把这个脚本挂到世界UI上就行了

@Core.Class
export default class LookWordUI extends Core.Script {

    wordUI: Gameplay.UIWidget

    targetChar: Gameplay.Character

    protected async onStart(): Promise<void> {

        if (SystemUtil.isClient()) {
            // 找到世界UI
            this.wordUI = this.gameObject as Gameplay.UIWidget
            // 找到目标角色
            this.targetChar = (await Gameplay.asyncGetCurrentPlayer()).character

            this.useUpdate = true
        }

    }


    protected onUpdate(dt: number): void {
        if (SystemUtil.isClient()) {
            this.wordUI.worldRotation = this.targetChar.worldLocation.subtract(this.wordUI.worldLocation).toRotation()
        }
    }
}

回复

使用道具 举报

羽逸之光楼主 发表于 2023-3-19 10:36:54 | 显示全部楼层
空伊伊 发表于 2023-3-17 18:27
这个效果看看怎么样,代码很简单,就是让世界UI的旋转一直对着玩家。代码你还可以优化的
使用方式只需要 ...

这个如果是多个玩家的话,就得每个客户端都维持一个自己的map去存全部玩家头上的世界ui
回复

使用道具 举报

空伊伊 发表于 2023-3-19 10:39:53 | 显示全部楼层
羽逸之光 发表于 2023-3-19 10:36
这个如果是多个玩家的话,就得每个客户端都维持一个自己的map去存全部玩家头上的世界ui ...

原地不动的世界UI适合用这个来弄,因为它不动的话,你可以给这些UI的所在范围加个触发器,当角色进入范围的时候再开始更新,这样就不用每帧都去计算位置。如果是世界UI要跟着角色移动,那么还是头顶UI比较适合
回复

使用道具 举报

羽逸之光楼主 发表于 2023-3-19 10:42:07 | 显示全部楼层
应该是按照这个世界UI中心锚点去算的,部分遮挡的话不生效,要锚点被遮住才会生效

image.png

image.png

image.png

回复

使用道具 举报

72小时热榜
热门版块
快速回复 返回顶部 返回列表