WebGL BabylonJS GUI 如何创建连接模型的按钮

如图所示:

方法:

javascript 复制代码
 createGUI(mesh: BABYLON.Mesh, title: string, index: number) {
    const advancedTexture = AdvancedDynamicTexture.CreateFullscreenUI('UI')

    const rect = new Rectangle()
    rect.width = '100px'
    rect.height = '40px'
    rect.thickness = 0
    advancedTexture.addControl(rect)
    rect.linkWithMesh(mesh)
    rect.linkOffsetY = -120

    const backgroundImage = createImage('backgroundImage', 'texture/area-btn-bg.png', 1, 0.9)
    backgroundImage.verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP
    rect.addControl(backgroundImage)

    const button = Button.CreateSimpleButton(`area-button-${index}`, title)
    button.thickness = 0
    button.fontSize = '16px'
    // button.background = 'rgb(45,149,251)'
    button.cornerRadius = 80
    button.color = 'white'
    button.onPointerClickObservable.add(() => {
      if (this._isAnimation) return
      const { x, z } = areaPointList[index].position
      this._isAnimation = true
      moveTarget(this._camera, {
        position: new BABYLON.Vector3(x, 2, z),
        radius: 100,
        speed: 60,
      }).then(() => {
        this._isAnimation = false
      })
    })
    rect.addControl(button)

    const line = new Line()
    line.lineWidth = 1
    line.color = 'rgb(45,149,251)'
    line.y2 = 20
    line.linkOffsetY = -20
    advancedTexture.addControl(line)
    line.linkWithMesh(mesh)
    line.connectedControl = rect
  }
相关推荐
ZzT4 分钟前
深扒 Claude Code Buddy 模式:一只仙人掌背后的确定性随机算法
前端
cch89187 分钟前
PHP vs Go:Web开发选谁更胜一筹?
前端·golang·php
芒果披萨12 分钟前
sql存储过程
java·开发语言·数据库
楚Y6同学13 分钟前
QT C++ 实现图像查看器
开发语言·c++·qt·图像查看
yaoxin52112318 分钟前
368. Java IO API - 基本文件属性
java·开发语言·python
建军啊31 分钟前
java审计进阶
java·开发语言·python
2401_8896269234 分钟前
Java流程控制与方法全解析
java·开发语言
码界筑梦坊36 分钟前
329-基于Python的交通流量数据可视化分析系统
开发语言·python·信息可视化·数据分析·django·vue·毕业设计
yong999039 分钟前
带挂载的四轴飞行器模型预测控制(MPC) MATLAB实现
开发语言·matlab
报错小能手43 分钟前
ios开发方向——对于实习开发的app(Robopocket)讲解
开发语言·学习·ios·swift