【问题标题】:Create stable (not moving) objects - three.js创建稳定(不移动)的对象 - three.js
【发布时间】:2014-05-19 15:14:21
【问题描述】:

我正在使用 three.js 库构建一个游戏,并且我希望在屏幕上有一个不可移动的小“面板”。我的意思是用户将能够在 3D 环境中导航,但面板将始终位于其屏幕的前面(就好像相机移动不会影响它一样)。

这是一个示例 http://icecreamyou.github.io/Nemesis/game.html

虽然,我希望这个面板里面有可点击的对象,例如网格,我将点击它并调用一个函数。在示例中,这个人使用了一个 div 元素。

如何实现这一点?我检查了 Sprite 对象,但据我所知,它还不能点击。到目前为止,我过去常常创建可点击的网格,将它们放置在我想要的位置并在相机移动时移动它们,但这还不够好,因为相机移动的复杂性。

编辑哦,我没有告诉你的另一件事是我希望这个面板不影响后面的内容。我的意思是我希望它是透明的。只会显示存在的网格。我不希望面板隐藏任何东西。

【问题讨论】:

  • 你为什么不把它设置为普通的旧 HTML 元素?
  • 在画布元素内部?我想在面板中有可点击的网格?你的意思是在 html 元素中还有一个 canvas 元素?
  • 我认为你可以在当前画布前面有另一个画布,并在那里呈现你想要的任何东西。您的示例使用它(画布雷达)
  • 是的,我想过。这是个好主意。我只是想知道是否可以将面板放在我拥有的一个画布内,以解决性能问题。因为项目很大,有很多 3d 对象功能等。你知道额外的画布元素会对性能等有多大影响吗?谢谢

标签: javascript three.js webgl panel clickable


【解决方案1】:

您不必跟着摄像头四处走动。只需将面板对象作为子对象添加到相机,它就会完美粘贴。 (不过,您必须将其相对于相机定位一次。) camera.add(面板)

【讨论】:

    猜你喜欢
    • 2020-04-13
    • 2018-08-30
    • 2015-06-01
    • 2013-04-02
    • 1970-01-01
    • 2017-01-16
    • 2012-06-23
    • 2020-04-25
    • 2018-03-20
    相关资源
    最近更新 更多