• UC分析-武器系统之子弹获取


    UC的主角是一个左手拿刀,右手拿枪,自带时间控制BUFF的高手,有枪就得有子弹,UC中获取子弹有三种方式

    LevelBP里设置子弹

    image

    捡起ShotGun时会给两发子弹,最常用的是在一个箱子里呆着,会最高给3发子弹,

    image

    这也是要分析的一种给子弹方式,这个盒子是一个普通的BP,带有一个Volume在层次结构上,这样就可以检查玩家是进入与离开

    image

    EventGraph里处理了几个事件,BeginOverlap/EndOverlap/Tick,

    image

    BeginOverlap事件最重要的是设置CharInVolume为true,这样Tick事件里才会认为玩家在box里,EndOverlap事件对应就是清掉这个标志

    Tick事件,主要就是做三件事,把Box里的子弹数目绕向玩家、加子弹、处理时间效果,这里只介绍加子弹

    image

    加子弹的条件时Box没有被destroy及玩家在box里,其次是检查子弹是否已经加满,默认是加3颗

    image

    最后玩家必需要待上一段时间才能加子弹,

    image

    上面这段BP代码翻译成数学是这样一个公式(delta / GTD + AT) > AI如果为真就加子弹,通俗一点的话说就是假设1秒钟加子弹,那玩家在每一帧都会累计AT的值,当大于AI时就加子弹了

    image

    然后就是调用character里的函数AddAmmoToGun,ActionCounter加1 ,AT清0继续累计,盒子的弹药数量减1并显示,

    MyCharacter的函数AddAmmoToGun,

    image

    很清楚,它是调用范围类武器加子弹,但这里关心的是通知了AddAmmoEvent事件,这个事件是用来通知玩家头上的TextRender显示一些提示性文字的

    最后就是HUD里是怎么显示弹药的,

    image

    这时因为UMG里控件绑定一个GetText0函数

     image

    GetText0从玩家身上获取弹药,然后就是拼装字符串

    image

    -----------转载请标明出处

  • 相关阅读:
    (一)基础配置
    (一)Zookeeper全分布式搭建
    Go性能测试
    Go单元测试
    Go C连接(keep-alive/websocket) D连接 C轮询 D轮询
    Go UDP
    Go TCP 粘包
    Go Once用法 goroutine协程 chanel通道
    Go strconv包
    Go 反射reflect包
  • 原文地址:https://www.cnblogs.com/BlankEye/p/4248249.html
Copyright © 2020-2023  润新知