gpt4 book ai didi

c# - 如何计算特定方向垂直于多边形表面的3D矢量

转载 作者:行者123 更新时间:2023-11-30 21:27:26 25 4
gpt4 key购买 nike

我正在 Unity 3D 中创建一个小行星采矿游戏,其中“向下”是您所在星球的中心(因此我在处理矢量时主要使用局部旋转)。我有一个工作的基于物理的角色 Controller ,但它在处理斜坡方面有问题。这是因为当我向角色添加力时,当前它会沿着玩家的前向矢量插入(见图)。我想要做的是计算平行于这个地形表面的矢量,但方向是玩家面对的方向(以便玩家可以向上移动斜坡)。

ms paint drawing

我最初认为我可以找到垂直于法线的矢量,但我怎么知道它会在哪个方向。同样复杂的是,玩家可以以任何方式相对于全局 x、y 和 z。

无论哪种方式,我都有地形的表面法线,我有玩家的所有方向向量,但我就是不知道如何将它们放在一起。如有必要,我可以上传编辑器的代码或屏幕截图。谢谢。

最佳答案

通常的方法是分解出平行于表面法线的前向向量的分量:

Illustration

fp = f - dot(f, n) * n

参见 vector rejection .

这个公式也将使 fp 越短,坡度越陡。如果你不想这样,你可以在之后重新缩放 fp 使其具有与 f 相同的长度。

关于c# - 如何计算特定方向垂直于多边形表面的3D矢量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57748406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com