zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    jquery插件:web2.0分格的分页脚,可用于ajax无刷新分页
    Application共享数据
    WebClient类
    HttpResponse类
    IEqualityComparer<T>接口
    物理数据库设计 理解浮点数
    Server对象,HttpServerUtility类,获取服务器信息
    Linq to OBJECT之非延时标准查询操作符
    IComparer<T> 接口Linq比较接口
    会话状态Session
  • 原文地址:https://www.cnblogs.com/BlankEye/p/4248249.html
Copyright © 2011-2022 走看看