【问题标题】:Constraining orbitControls maxDistance when targeted, THREE.js目标时约束 orbitControls maxDistance,THREE.js
【发布时间】:2019-04-11 05:58:14
【问题描述】:

我在 three.js 中有一个第三人称 RPG 风格的环境。我正在使用轨道控制。控件很好地针对玩家 obj,无论她在世界的哪个位置,我都可以围绕她旋转。

我尚未解决的问题是在移动时保持固定的缩放距离,该距离小于设置的 maxDist 值。到目前为止,我能够做到的唯一方法是使最小/最大值相同。当我设置一个较大的 maxDistance 值(比如 5000)时,只要我开始移动玩家,她就会远离凸轮,直到达到 maxDist。

我希望能够在玩家移动时设置辅助或临时 maxDist 值,比如 500,但如果需要,仍然允许缩小到 maxDist (5000)。有没有人做过类似的事情或有建议?

提前致谢。

【问题讨论】:

  • 如何根据自己的需要设置minZoommaxZoom,每帧更新OrbitControls的target对应玩家的位置?
  • 是的,这就是我正在做的事情:this.controls.minDistance = 500; this.controls.maxDistance = 2500; 在 init 和:const pos = this.player.object.position.clone(); pos.y += 100; this.controls.target = pos; this.controls.update(); 在更新。没用。
  • 如果您能够提供当前方法的工作演示,这可能会有所帮助。

标签: javascript three.js controls


【解决方案1】:

您可以在渲染循环中的每一帧设置 .maxDistance,在调用 controls.update() 之前,可以复制轨道控制并对其进行修改以满足您的需要。

【讨论】:

  • 嗨,谢谢,但这会产生与使最小值/最大值相等相同的问题(或部分解决方案) - 它会限制缩放,但仍会在向前移动时自动缩小(因为初始凸轮 z位置小于 maxDist),直到达到设置的最大值。不知道如何修改轨道控制库,但我可以看看...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 2015-12-29
  • 1970-01-01
  • 2019-09-26
  • 2015-11-16
  • 1970-01-01
相关资源
最近更新 更多