程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Godot GDscript中获取骨骼的全局世界坐标大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在Godot GDscript中获取骨骼的全局世界坐标?

开发过程中遇到如何在Godot GDscript中获取骨骼的全局世界坐标的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在Godot GDscript中获取骨骼的全局世界坐标的解决方法建议,希望对你解决如何在Godot GDscript中获取骨骼的全局世界坐标有所启发或帮助;

我正在使用 GDscript 在 Godot 中编写一个程序,旨在更改骨架中多个骨骼的位置。骨骼被转换为由我希望骨骼移动到的点减去骨骼的当前位置计算的值。 translateValue = endPoint - currentPoint 但是,所有值都必须处于世界坐标或全局位置,代码才能工作。 Godot 有多种方法来检索骨骼变换以访问位置,例如:skeleton.get_bone_pose(),skeleton.get_bone_global_pose,skeleton.get_bone_rest。我尝试使用 skeleton.get_bone_global_pose 但它没有给出全局位置并且似乎仍然与某些东西相关。还有 to_global() 方法,但我不完全确定它的作用。有人可以解释这些方法之间的差异以及如何获得全局位置吗?谢谢!

解决方法

我将从这些方法开始:

  • get_bone_rest
  • get_bone_custom_pose
  • get_bone_pose

首先,get_bone_rest 为您提供骨骼相对于其父骨骼的默认变换。然后按上述顺序堆叠另一个变换。


然后我们有:

  • get_bone_global_pose

此方法为您提供骨骼的最终变换。它是相对于 Skeleton。也就是说,这个变换已经包含了前面提到的从父骨骼到子骨骼的变换。

因此,将其结果转换为世界空间是构成 Skeleton 的变换的问题:

$Skeleton.global_transform * $Skeleton.get_bone_global_pose(bone_index)

我们有:

  • get_bone_global_pose_no_override

顾名思义,get_bone_global_pose_no_override 忽略任何全局姿态覆盖。没错,您可以覆盖全局姿势。为此,请使用 set_bone_global_pose_override。另见clear_bones_global_pose_override。当然,这些都与 Skeleton 相关。


方法 Spatial.to_global(vector3)Skeleton 无关。它将向量从您调用它的节点的局部空间转换为世界空间。这也可能有用:

$Skeleton.to_globla($Skeleton.get_bone_global_pose(bone_index).origin)

大佬总结

以上是大佬教程为你收集整理的如何在Godot GDscript中获取骨骼的全局世界坐标全部内容,希望文章能够帮你解决如何在Godot GDscript中获取骨骼的全局世界坐标所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: