🔫CoopGame03-武器2

type
status
date
slug
summary
tags
category
icon
password

本小节介绍

1.实现三个功能
  • 开镜狙击
  • 优化武器开火代码
  • 武器开火时反作用力照成的摄像机抖动
  • 设置对多表面类型的支持,比如击中木质表面金属表面玩家时生成不同的效果。
  • 优化开火时播放特效的代码

狙击开镜

添加操作映射

  1. 鼠标右键绑定Zoom操作(原理按下右键瞄准时视野减小)
    1. notion image

编写开镜逻辑

  1. SCharacter角色类中添加开镜相关函数

    优化开镜平滑效果(使用插值)

    优化武器开火代码

    1. 之前角色开火是在角色蓝图中使用自带的鼠标左键事件,调用CurrentWeapon引用的武器类的Fire()函数进行开火.
      1. notion image
    1. 现在我们需要删除这些蓝图,改成在C++中通过输入中的操作映射来开火.
      1. 添加ToFire操作映射
        1. notion image
    1. 在角色类SCharacter中编写开火函数ToFire();
      1. 运行测试是否能正常开火.

      开火镜头震动

      1. 在武器类SWeapon中声明和使用相机震动类
      1. 创建继承MatineeCameraShake相机震动类的蓝图类,命名为CamShake_RifleFire
        1. 设置相机震动类MatineeCameraShake的属性
        2. notion image
      1. 在武器蓝图类BP_SWeapon的类默认值中设置FireCamShake的属性值为CamShake_RifleFire

      不同物体不同击中效果

      设定自定义表面实现不同击中特效。
      1. CoopGame.Build.cs文件中添加PhysicsCore依赖。
        1. 项目设置-物理-物理表面中添加两个物理表面FlashDefaultFlashVulnerable
          1. notion image
        1. 新建Corn文件夹,右键创建两个物理材质继承PhysicalMaterial类。FlashDefaultFlashVulnerable
          1. notion image
        1. 在项目头文件中定义表面对应类型(注意定义的结尾没有分号)
          1. 在武器C++类SWeapon中修改击中特效为两个不同的特效。
            1. 在武器蓝图BP_SWeapon中设置两个特效变量的类默认值。
            notion image
            1. 给新建的Corn文件夹下的两个物理材质FlashDefaultFlashVulnerable分别设置对应的表面类型FleshDefaultFleshVulnerable
              1. notion image
            1. 设置人物骨骼物理资产,
              1. 设置除了头部之外的形体物理材质重载为FleshDefault,头部物理重载设置为FleshVulnerable
                1. notion image
            1. 添加自定义通道。
              1. 创建检测通道Weapon,默认响应为阻挡。
                1. notion image
              2. 项目类头文件中定义第一个追踪通道为COLLISION_WEAPON
                1. 武器类SWeapon开火函数Fire()中使用自己的碰撞通道COLLISION_WEAPON
                1. 角色类SCharacter中设置胶囊体的碰撞通道忽略COLLISION_WEAPON,因为要让子弹打到网格体才能有不同的特效,而不能打到胶囊体.
                  1. 然后确保角色蓝图BP_SCharacter中胶囊体的碰撞通道忽略了Weapon。将碰撞预设设置为自定义并设置Weapon通道为忽略
                    1. notion image

                  播放开火特效代码优化

                  1. 合并后的代码

                    击中头部伤害暴击

                    1. 修改武器类SWeapon代码。
                      1. 绘制伤害调试球。
                      notion image

                      鼠标长按连发开火

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