🔫CoopGame03-武器2
type
status
date
slug
summary
tags
category
icon
password
本小节介绍
1.实现三个功能
开镜狙击
- 优化武器开火代码
- 武器开火时反作用力照成的
摄像机抖动
- 设置对多表面类型的支持,比如击中
木质表面
,金属表面
或玩家
时生成不同的效果。
- 优化开火时播放特效的代码
狙击开镜
添加操作映射
- 鼠标右键绑定
Zoom
操作(原理按下右键瞄准时视野减小)

编写开镜逻辑
- 在
SCharacter
角色类中添加开镜相关函数
优化开镜平滑效果(使用插值)
优化武器开火代码
- 之前角色开火是在角色蓝图中使用自带的鼠标左键事件,调用CurrentWeapon引用的武器类的
Fire()
函数进行开火.

- 现在我们需要删除这些蓝图,改成在C++中通过输入中的操作映射来开火.
- 添加ToFire操作映射

- 在角色类SCharacter中编写开火函数
ToFire();
- 运行测试是否能正常开火.
开火镜头震动
- 在武器类
SWeapon
中声明和使用相机震动类
- 创建继承
MatineeCameraShake
相机震动类的蓝图类,命名为CamShake_RifleFire
- 设置相机震动类
MatineeCameraShake
的属性

- 在武器蓝图类
BP_SWeapon
的类默认值中设置FireCamShake
的属性值为CamShake_RifleFire
。
不同物体不同击中效果
设定自定义表面实现不同击中特效。
- 在
CoopGame.Build.cs
文件中添加PhysicsCore
依赖。
- 在
项目设置-物理-物理表面
中添加两个物理表面FlashDefault
FlashVulnerable

- 新建Corn文件夹,右键创建两个物理材质继承
PhysicalMaterial
类。FlashDefault
FlashVulnerable

- 在项目头文件中定义表面对应类型(注意定义的结尾没有分号)
- 在武器C++类
SWeapon
中修改击中特效为两个不同的特效。
- 在武器蓝图
BP_SWeapon
中设置两个特效变量的类默认值。

- 给新建的Corn文件夹下的两个物理材质
FlashDefault
FlashVulnerable
分别设置对应的表面类型FleshDefault
和FleshVulnerable

- 设置人物骨骼物理资产,
- 设置除了头部之外的形体物理材质重载为
FleshDefault
,头部物理重载设置为FleshVulnerable

- 添加自定义通道。
- 创建检测通道
Weapon
,默认响应为阻挡。 - 项目类头文件中定义第一个追踪通道为COLLISION_WEAPON
- 武器类
SWeapon
开火函数Fire()
中使用自己的碰撞通道COLLISION_WEAPON

- 角色类
SCharacter
中设置胶囊体的碰撞通道忽略COLLISION_WEAPON
,因为要让子弹打到网格体才能有不同的特效,而不能打到胶囊体.
- 然后确保角色蓝图
BP_SCharacter
中胶囊体的碰撞通道忽略了Weapon
。将碰撞预设设置为自定义并设置Weapon通道为忽略

播放开火特效代码优化
- 合并后的代码
击中头部伤害暴击
- 修改武器类SWeapon代码。
- 绘制伤害调试球。

鼠标长按连发开火
SWeapon.h
SWeapon.cpp
SCharacter.h
SCharacter.cpp(改变按键绑定的开火函数)
Prev
CoopGame02-武器1
Next
CoopGame04-伤与挂
Loading...