(蓝图)虚幻4制作超级马里奥(十一)规则和目标

规则和目标

目录

规则和目标

BP_MyGameMode

BP_DeadBox(Actor)

BP_MyPlayerController

绑定Setting键事件

清除状态事件

角色攻击敌人

第一种方式,检测玩家角色进入该体积时的运动方向来判断生死(踩)

第二种方式,拾取道具,发射子弹,攻击敌人

新建BP_Bullet子弹蓝图(Actor)

发射子弹

添加子弹道具

总结新增道具流程

修改UI

分数

状态条

修改PlayerController

修改GameMode


对于这款游戏

  1. 不断前进到达终点则游戏胜利,根据消灭敌人、用时和跳到旗帜的高度结算分数
  2. 坠落方块、碰到敌人就意味着死亡游戏失败,重生或开始新的游戏
  3. 踩到敌人头上、拾取道具发射子弹便可消灭敌人

 

我们通常在GameMode(游戏模式)里面创建游戏规则。现在实现下面几个事件

  • 玩家死亡
  • 消灭敌人
  • 结算分数

BP_MyGameMode

第一排暂停游戏,创建UI并添加到显示,把UMG提升为变量,第二排获取出生点,第三排记录BP_player

开始游戏事件,不要忘了回到UMG中添加调用这个事件,这里仅仅设置了角色的位置,还没有清除角色状态,后面还要修改

关卡底部的DeadBox和触碰到敌人都会触发这个事件,显示菜单UMG

BP_DeadBox(Actor)

添加一个box碰撞体积,一旦角色进入就会执行BP_MyGameMode里面的PlayerDead事件

BP_MyPlayerController

绑定Setting键事件

选中组件中的self,再细节面板中设置Input

清除状态事件

之前获得效果之后,一定时长后清除效果,我们要做的,结束游戏的时清除计时器并调用清除效果函数即可

首先将计时器返回值提升为变量

调用一个清除函数,再把上面的恢复函数复制一份下来即可

BP_MyGameMode中把BP_MyPlayerController提升为变量方便使用

在StartNewGame中接入即可

还有一个问题,场景中的Wall由于存在一个Bool变量

如果我们在第一次游戏触发了生成道具,那么第二次就不会触发

所以我们在新游戏开始之前还要重置IsCanSpawnItem布尔变量

在StartNewGame设置所有Wall的IsCanSpawnItem为true

角色攻击敌人

第一种方式,检测玩家角色进入该体积时的运动方向来判断生死(踩)

之前角色跳到AI头上,会被顶上天,现在我们修改该AL的各个碰撞值,除了最外层的胶囊体设置只允许Pawn进入外其他全设置为没有碰撞

再添加一个胶囊碰撞体积将AI包裹,比原来的胶囊体稍微大一些

 

测试一下角色的运动方向

可以看到当我们正面碰上AI时Z轴分量为0,而从上方击中AI时Z轴分量为-数,那么我们就简单的按照Z轴的数值进行判断是否踩中AI。

最后如果Z轴分量小于0则AI阵亡,否则玩家阵亡。

第二种方式,拾取道具,发射子弹,攻击敌人

增加按键映射

修改TouchInterface,把B键映射到F按键

新建BP_Bullet子弹蓝图(Actor)

StaticMesh组件(球)

ProjectileMovement组件(弹道移动),设置碰撞值为穿过任何,修改大小

让子弹生成后一定时间自动消失,之前的Item道具里面也可以设置一个

发射子弹

BP_Player增加一个布尔变量,用来确定发射方向

朝X正方向(右)移动时AxisValue为整数设置Direction为true,后面根据这个来设置子弹的生成位置

绑定F开火事件

我们再增加一个子弹数进行限制

和一个最大子弹数,创建一个重新装弹的自定义事件,当我们拾取道具之后,再调用这个事件对当前子弹数进行设置,才允许开火

 

AI_Character_Normal中修改碰撞检测,与子弹碰撞则死亡,并销毁子弹

添加子弹道具

首先回顾一下之前我们道具制作的思路,道具的类型我们在枚举值中进行定义,道具的作用我们在PlayerController里面定义,然后在Item道具类中当玩家与拾取道具后进行调用。Item道具类又是由Wall生成并随机设置其类型,

总结新增道具流程

  1. 增加一个枚举值
  2. 定义其具体功能
  3. 设置什么时候调用
  4. 道具生成时设置类型

修改道具枚举蓝图,增加一条Bullet枚举值

具体功能我们已经在BP_Player中实现了,那么设置在与玩家发生碰撞的时候调用这个功能

BP_Item中提升BP_player为变量,再下面开启E_ItemType时调用BP_Player中装弹事件

BP_BaseWall蓝图中,对于三种道具,使用一个随机Bool值已经不够了,我们随机一个范围为012的int值对ItemType道具类型进行设置

修改UI

分数

声明分数变量

新游戏清除分数

显示分数

水平Box

左边文字

右边文本框

 

调用AddGrade

修改AI_Character_Normal

BP_MyGameMode里面的PlayerDead事件之前有一个目标值是没有用的,删掉即可

状态条

GameMode

UI_Menu

修改PlayerController

修改GameMode

完结

本教程到这里就结束了,内容还是比较完整的,也有很多可复用的思想,如果对你有所帮助,点个赞关注支持一下,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锋哥游戏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值