UE受击角度计算

某个角色发射射线检测后检测到另一个角色,本文将介绍如何计算被击中点与被击中actor向前向量之间的夹角。这个夹角可以用来当作混合空间动画的水平轴与垂直轴,来实现受击动画等效果。

这里把这个部分放到一个函数里,因为线较多,且可以复用。

首先,需要获取两个向量一个为actor向前向量,一个为actor位置指向受击点的向量,然后将该向量单位化(这两个节点也可以用一个节点GetUnitDirection代替),最后将这个向量投影到xy平面。首先将两个向量进行dot点乘。点乘运算法则为两个向量的模相乘再乘以之间夹角的余弦值。然后再用反三角函数将余弦值变为角度。虚幻引擎里三角函数与反三角函数都要两类:角度与弧度。要用角度都用角度,要用弧度都用弧度。这样计算出来的角度是图中带箭头的两个线形成夹角的补角。再对这个角度去取正弦与余弦。

如图,当红色的点受到攻击时,此时的sin为正,cos为正。动画蓝图与混合空间里里,前为向前动画,左为向左动画……水平轴为x,垂直轴为y,紫色数字为混合空间里各轴的具体数值。所以此时的值为(+sin,+cos),这个角正好是红色点与圆心的直线与圆的另一个交点。这样播放的动画就是受击动画了。

如果只要点乘,那么左半部分与右半部分就完全相同不能区分,所以就需要用cross叉乘,叉乘遵守右手法则。当受击点在右半部分叉乘后向量的z轴为正,结果保持不变。当受击点在左半部分,这个值为负,我们将sin、cos都乘-1。这里不再举例,你可以找点自行验证。

至此,受击角度的计算就完成了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇