• UC武器系统之枪与子弹


    1.

    UCWeapon与UCWeaponRanged武器的本质区别是后者是需要子弹的,也就意味着后者在能否BaseAction时需要检查玩家的是否有弹药

    image

    刀是通过检测是否播放动画能知道自己是否应该攻击,但枪就不行了,因为枪在攻击之前是要把子弹刷出来的,因此UWeaponRange的BaseAction通知UCWeapon的PrivateBaseAction事件,具体武器重写这一事件,具体到UCWeaponCharGun是这样的

    image

    PrivateBaseTion事件里CharGun先刷出Projectil,再刷出UCShell,然后就不管了,毕竟枪的BaseAction是发出子弹,子弹才能伤怪,而不是枪

    2弹壳的分析

    子弹的实现是分成了弹壳(UCShell)与子弹(UCProjectil)的,

    UCShell模型

    image

    弹壳的主要作用是模仿弹壳的弹跳,它最多弹跳6次,就消失了

    image

    这一大片的代码都是为了给Shell设置旋转及速度的,一个东西想要运动及旋转起来,UC的作法是给它加上

    image

    3子弹分析

    子弹的核心是Hit事件,总体的逻辑是如果子弹没有打中bot怪,就对击中的物体模拟一个物理效果,并生成一个弹孔,如果击中了就由Bot怪的Hit事件处理,子弹就不理会了

    image

    imageimageimage

    这时再回到CharGun,刷子弹的过程,首先是在枪口处给一个火焰粒子特效,模拟真实的枪

    image  image

    然后刷子弹,并禁止子弹伤到自己,

    image

    最后是把弹道画出来,这个效果是在运动中才能看出来

    imageimage

    最后谈一谈ShotGun的子弹,散弹枪子弹就是一颗子弹包含了多颗子弹而已,只需要在一个for循环里多刷几发子弹就好了,

    image

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

  • 相关阅读:
    494 Target Sum 目标和
    493 Reverse Pairs 翻转对
    492 Construct the Rectangle 构建矩形
    491 Increasing Subsequences 递增子序列
    488 Zuma Game 祖玛游戏
    486 Predict the Winner 预测赢家
    485 Max Consecutive Ones 最大连续1的个数
    483 Smallest Good Base
    Django Form组件
    Django Auth组件
  • 原文地址:https://www.cnblogs.com/BlankEye/p/4248402.html
Copyright © 2020-2023  润新知