为什么我的位置没有在 ref.current.position 中更新

发布于 2025-01-11 09:00:44 字数 428 浏览 0 评论 0原文

我正在尝试根据网格位置更改 r3f 场景中的相机位置。我还使用 r3f/cannon 进行物理和参考定位。每当我尝试检索我的身体位置时,裁判认为它没有改变,我只是得到了初始设定位置。为什么我无法检索更新后的位置?这是 ref 和 useFrame 的片段

  const [ref, api] = useSphere(() => ({ args: [5,10,10], mass: 1, position: [0, 15, 0], material: { friction: 10}, ...props }))
  
  useFrame(({clock}) => {
    console.log(ref.current.position)
  })

它只记录初始位置,即使对象正在移动

I am trying to change the camera position in my r3f scene based on a mesh position. I am also using r3f/cannon for physics and ref positioning. Whenever i try and retrieve the position of my body, the ref thinks it hasnt changed and i just get the initial set position. Why can't i retrieve the updated position? Here is a snippet of the ref and useFrame

  const [ref, api] = useSphere(() => ({ args: [5,10,10], mass: 1, position: [0, 15, 0], material: { friction: 10}, ...props }))
  
  useFrame(({clock}) => {
    console.log(ref.current.position)
  })

It only ever logs the initial position, even if the object is moving around

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

安穩 2025-01-18 09:00:44

这是因为 cannon 没有更新对象的位置
对象位置通过矩阵变换进行更新。

您可以使用 api 来获取更新的位置:

const [ref, api] = use...(...)
const pos = useRef([0, 0, 0])
useEffect(() => api.position.subscribe(v => pos.current = v), [])

This is because cannon is not updating the position of the object.
The object position is updated through a matrix transform.

you can use the api to get the updated position:

const [ref, api] = use...(...)
const pos = useRef([0, 0, 0])
useEffect(() => api.position.subscribe(v => pos.current = v), [])
箜明 2025-01-18 09:00:44

访问位置的正确方法是 ref.current.position

The correct way to access the position will be ref.current.position

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文