接上集!
角色动画
跳跃优化
在这时我们发现这跳跃有bug,在我们疯狂按下跳跃键时,人物还进行这跳跃的动作,这显然不符合实际情况,所以我们要优化一下
创建变量
在角色蓝图中,创建一个布尔变量Is jump(是否可以跳跃)用来判断角色的跳跃
![](https://img-blog.csdnimg.cn/img_convert/e8140e85486e49347ed02b5b42c35867.png)
ctrl加鼠标左键拖动变量,在操作界面上B键加鼠标左键可以快捷键创建蓝图节点branch(分支),将Is Jump连接分支
![](https://img-blog.csdnimg.cn/img_convert/ac110386c23d1ab8cfc58445c538de88.png)
注意一开始我们是能够跳跃的,所以设置变量,默认值打钩
![](https://img-blog.csdnimg.cn/img_convert/494db27fae6f9905dbe502400ae00a48.png)
判断的设置
我们在按下跳跃键的时候,就不能跳跃了。在跳跃的结束时,变量的默认值设置为打钩(能够跳跃),按住alt加鼠标左键快速拖动变量,快捷设置变量
![](https://img-blog.csdnimg.cn/img_convert/966f5b918f78828b257f533e54b4ae67.png)
因为现在不想史莱姆二段跳,所以这里有个简单的方法,使用delay(延迟)节点
![](https://img-blog.csdnimg.cn/img_convert/873aa160ecb7983cdaaec264a2a0876c.png)
主角特殊能力
控制物体
检测物品
主要使用通道检测完成此能力,使用按键E来测试,拉出相机组件,获取相机的(get world location)世界位置节点,添加(get world rotation)世界旋转节点后拉出(get forward vector)获取向前向量
![](https://img-blog.csdnimg.cn/img_convert/6d0301da99391db0e3a726d68b893edc.png)
之后用获取向前向量节点拉出*(乘)节点,之后右键向量替换引脚改为浮点(单精度)
![](https://img-blog.csdnimg.cn/img_convert/cd60480191235cd62b6008e40ff6d4b9.png)
乘以一个500之后,拉出,添加节点+(加),用世界位置加上乘出来的数,最后连接上End。Start是从哪里开始,End是从哪里结束
![](https://img-blog.csdnimg.cn/img_convert/4666927d2a461cbf8729ed6d61d97bbb.png)
优化检测物品
在检测节点后Return Value(返回的值)后连上一个分支节点,判断物品是否为一个,如果是接着下方操作
![](https://img-blog.csdnimg.cn/img_convert/652e2eb5d40d69e6d4ef923bd8512efa.png)
命中的物品
在检测节点的Out hit后我们拉出,可以看要一个中断命中结果节点的分支节点,这个节点的作用是,更方便看我们使用的哪个actor类型
![](https://img-blog.csdnimg.cn/img_convert/dc5f8e7285d4d7f71e41aac13be4c83e.png)
核心操作
在角色的组件中添加PhysicsHandle(物理柄组件),这是控制物品的关键组件
![](https://img-blog.csdnimg.cn/img_convert/3c87a5ffa1ff72355f8a1b30d510c9b1.png)
使用ctrl键将PhysicsHandle组件拖进蓝图界面,拉出组件Grab component at location with rotation(在位置抓取带旋转的组件),在中断命中结果节点,获取Hit Component的世界位置连上Grab component at location with rotation(在位置抓取带旋转的组件)的Location(位置)上
![](https://img-blog.csdnimg.cn/img_convert/8a5355ec6bb5683b5ec5741bb4289eae.png)
设置抓取对象
创建布尔变量Is_Grab_object?(是否能抓取对象),并在末尾出设置变量为Ture(打钩)
![](https://img-blog.csdnimg.cn/img_convert/c4d0801925c15ca12bd72cfa1ce73b62.png)
松手物品
我们在E键节点的Released(取消释放)使用分支节点,判断能否抓取物品,如果能就可以用PhysicsHandle组件使用释放组件节点,在后方设置变量为False(不打钩)
![](https://img-blog.csdnimg.cn/img_convert/6e20fe4fdb235a256c2009aef565c1ff.png)
移动物品
要想移动物品首先,要逐帧设置物体的位置,所以使用事件Tick(Event tick)节点,用布尔变量Is_Grab_object判断物品是否在控制中,在使用组件中的设置目标位置,New Location(更新的位置)连接的就是上方连接End的节点
![](https://img-blog.csdnimg.cn/img_convert/cd09996e29a8bdce05314074084c7b15.png)
提醒
设置主角能控制多远的物品,就是乘多少,数值越大越远
![](https://img-blog.csdnimg.cn/img_convert/322952118d68c39a24c38100f00b8be9.png)
设置主角控制物品的距离,与上方一样
![](https://img-blog.csdnimg.cn/img_convert/a5c758160742da18ec22cf7c15231def.png)
物体的物理特性必须得要开启模拟物理
![](https://img-blog.csdnimg.cn/img_convert/a21ee2c7f53d4997753c26202764b7e6.png)
并且在碰撞设置中碰撞预设要设置成物理Actor
![](https://img-blog.csdnimg.cn/img_convert/b801ed87e3f89297031f6c3132a765be.png)
成品欣赏
![](https://img-blog.csdnimg.cn/img_convert/5a40e3a2b8a9772e2fefe5159bfb90d6.png)
好玩的点:将物品放在角色的下方,我们就能够随着物品实现上天操作
![](https://img-blog.csdnimg.cn/img_convert/df4473faeccbfa6fdc9768883474eaea.png)