第一人称
新建一个角色类,重命名
加载手的模型
加载骨骼动画(idle)
调整手在摄像机下面的位置以及旋转,调整摄像机位置(可以参考第一人称模板)
将MyFirstPerson拖到场景里(为了区分原模板,更改材质)
更改颜色
更改玩家控制权(这样子游戏模式视窗就是我们自己的视窗了)
自己的:
原先的改为禁用
添加枪的模型
重命名Gun
调整装备位置
打开骨骼动画窗口
选择一个比较平稳的动画
插槽:UE4里通过把模型放在插槽下面来调整位置(通过调整插槽位置旋转)(有相应节点来控制的)
选择手部关节右键添加插槽,重命名为GunPoint
右键预览资产添加枪(并调整好枪的位置)
绑定骨骼和枪
在蓝图的construction scrip定义枪和骨骼的父子级关系,插槽上复制黏贴插槽的名字
手枪就绑定好了
做动作的交互蓝图
从UE5有了新的变动Enhanced Input in Unreal Engine | Unreal Engine 5.2 Documentation
新的设置如下图
旧教程:
(Action Mappings用于一次性的动作,Axis Mappings用于延续性的动作)
Add Movement Input必须要有移动组件才能使用
Yaw是全身旋转,Pitch是摄像机旋转
补充:按shift加速跑
拾取枪/捡枪
注意这里拖的是SK_FPGun,不是旁边橙色的那个
现在的角色蓝图类里面把枪的碰撞改为无,不可视
断开现在的构造脚本(手里握的枪)
枪的类型为SkeletaMeshActor:
手枪开火
1.射线类
LineTranceByChannel节点
3000是射线的长度(也可以理解为子弹距离)
这里draw debug type为persistent,意味着射线一直都在
添加冲击力与火花(测试了之后发现乘以300000才得劲儿)
添加拿了枪才允许开火的限制
新建一个bool变量fire
默认设为否
fire触发事件前面多加了一个branch,fire
丢枪(回家作业)
新建一个布尔变量 ThrewGun
在cast to 枪筛选节点提升一个变量得到MyGun
给枪一个弹远的冲击力,以免每次都重新捡回来
Vel Change
给予力的大小就会影响速度,与物品的质量无关(这样子无论是怎么样的枪被丢出去的效果都会差不多,不会因为质量相差太大)
2.子弹类
新建一个子弹类(组件要放在球体碰撞体同级位置,作用整个actor组件)
ProjectileMovement组件
可以让当前蓝图实例对象呈现出子弹一样的物理效果。
ProjectileMovement里要改的参数
(组件状态下没有物理模拟属性)
开火发射子弹:在箭头处生成子弹类的对象
ProjectileMovement 的追踪功能
(取消重力)
来到construction scripe定义 回家目标
子弹的构造脚本如下连起来
在构造脚本写完HomingTargetComponent之后,刷新一下下面的SpawActor BP Bullet节点
创建一个actor变量 (对象引用)
target这个变量就在外面暴露出来,并且可以任意选择要追踪的模型(吸管吸)
跟踪还是有点问题