在游戏或者数字化应用的开发过程中,我们经常会用到ActorA
相对于ActorB
的位置或者角度的计算。
相对位置的计算有什么应用呢,如果你没遇到这个问题,你可能觉得这个东西不是个事。应该会很简单,但是当你遇到之后,不断的翻蓝图或者c++的API,翻了半天,连线半天或者撸半天代码,怅然若失地发现怎么不行呢。
关于ue4
计算角度的方法,截图如下
方法1
方法2
方法3
当然以上方法可以帮助我们计算角度,前提是他们的参考系是World
的原点,不是某一个Actor。
当然这时候是否想到了另外一个节点,世界位置与本地位置的转换
参考UE4_local location(本地位置) 与 world location(世界位置) 转换
以上方法Convert Transform to relative
可以把传入的Actor1
的转入到Actor1
的相对坐标下,但是你要计算相对位置和相对角度,似乎又要周折一番,甚至是错误的,为什么这么说。
代码截图
Actor1
的位置是(0,0,0),Actor2
的位置是(-220,460,0),此时他们的角度结果是128。
如果把Actor2
的位置调整为(-220,-460,0),此时的结果是44.9。
这个结果显然不是我们想要的结果,因此这两次的结果不一致,我们想要的相对位置或者说相对角度应该是一样大。
即便Actor2
的位置发生变化,Actor1
相对于Actor2
的夹角应该是不变的。那么该如何去做呢?