当前位置: 首页 > news >正文

UE4学习笔记 FPS游戏制作14 发射抛物线子弹

文章目录

    • 首先制作一个子弹
    • 重写Launcher的发射方法
    • 敌人受伤
    • 设定时间间隔
      • 方法1 动画事件
      • 方法2 计时器

首先制作一个子弹

新建一个蓝图,父类为Actor,命名为Bullet
为其增加一个SphereCollider和静态网格体组件,静态网格体设为Sphere的子物体
在这里插入图片描述

调整ShpereCollider的碰撞尺寸,注意他的缩放尺寸还是1
在这里插入图片描述
碰撞预设里选择BlockAll
在这里插入图片描述

为静态网格体选择一个网格,我这里直接用了球,然后调整大小和位置,来符合ShereCollider的大小
在这里插入图片描述
然后为子弹添加一个ProjectileMovement组件,这可以让子弹呈抛物线移动
在这里插入图片描述
选择ProjectileMovement,调整一下速度
在这里插入图片描述
勾选可以反弹,否则球体第一次碰到表面就不会移动了
在这里插入图片描述
选择Bullet的self,输入一个存活时间,一定时间后自动销毁
在这里插入图片描述

重写Launcher的发射方法

在这里插入图片描述
这样就可以发射小球了

注意:这里的Spawn Transform Scale是111,那么生成后的物体的根节点就会是 1 1 1,即使我们在蓝图里修改了SphereCollision的尺寸,也会被设置为111,这就是为什么没有直接用网格的碰撞模拟(这里是老师说的,但是我认为可以不用SphereCollision,直接用网格的碰撞,直接把Spawn Transform Scale改成0.1 0.1 0.1就可以)

敌人受伤

在子弹的事件图表里,添加Hit事件节点
在这里插入图片描述

设定时间间隔

方法1 动画事件

添加一个变量canFire,开始射击时设置为禁止射击,在动画上添加事件,结束时将状态设置为可以射击,在开枪前判断canFire的状态

方法2 计时器

在Launghter上添加两个变量
在这里插入图片描述
ShootAnimTimeLength是射击动画的时长,默认值设置为0.4,0.4是射击动画的时长
然后修改Launghter的开火方法
射击前先判断一下现在的时间-上次开火的时间,是否大于开火的时间间隔
在这里插入图片描述
播放射击动画蒙太奇时,记录一下当前的时间(还是开火方法)
在这里插入图片描述

相关文章:

  • 多维动态规划 力扣hot100热门面试算法题 面试基础 核心思路 背题
  • 第四届能源、电力与电气国际学术会议(ICEPET 2025)
  • 后缀表达式 | 第十届蓝桥杯省赛C++B组
  • 如何使用Xshell连接Linux虚拟机
  • K8S学习之基础五十:k8s中pod时区问题并通过kibana查看日志
  • android Firebase Cloud Messaging (FCM) 接入
  • # 用 Paramiko,轻松掌控远程服务器
  • 0基础 | 制作麦克风音频放大电路
  • 使用redis设置店铺状态
  • 【ESP32-C2】基于 esptool 完成 Secure Boot V2 和 Flash 加密 Development 模式的完整指令序列
  • 遥控器钥匙学习---通过uds指令
  • How to share files with Linux mint 22 via samba in Windows
  • spring - 十二种事务失效场景
  • python虚拟环境安装opus(windows)
  • 大模型重点1 【综述-文字版】
  • 深度解析提示词工程:让AI成为你的超级助手(2025实战指南)
  • CI/CD(四) docker-compose 安装harbor
  • WebGPU 是比 WASM 更好的选择吗? (Is WebGPU a Better Choice Than WASM? )
  • 鸿蒙开发之背景图片的使用
  • mongoShake数据迁移
  • 凤阳文旅局长回应鼓楼瓦片脱落:楼宇是否属于文物?施工经费用在何处?
  • 萨洛宁、康托罗夫、长野健……7月夏季音乐节来很多大牌
  • 住建部:我国超9.4亿人生活在城镇
  • 去年中企海外新增风电装机量5.4GW,亚太区域占比过半
  • 多名幼师殴打女童被行拘后续,盘锦教育局工作人员:该局将专项整治全市幼儿园
  • 43.2℃!河南林州打破全省5月最高温纪录,明后天高温将持续