「自制卡牌游戏DIY」游戏阶段管理(2)

08/318 浏览主题教程
我正在尝试使用『星火编辑器』制作一款卡牌游戏。
今天我们接着上一期继续进行游戏阶段相关的触发器编写。当完成了计时器当前阶段读秒的方法和切换阶段的方法后,要用一个触发器处理阶段结束时程序需要做的事。当阶段结束时,触发器除了要执行服务端的方法外,也要向客户端发送不同的事件指令去让客户端执行和玩家相关的客户端触发器。那么话不多说,直接开干。
在服务端新建一个阶段结束的触发器,使其在收到当前阶段结束事件时触发。局部变量中声明当前阶段,通过当前阶段的名称获取所在阶段,并以此作为选择分支表达式进行阶段判断。最简单的是当选择首领阶段结束时,提前加载战斗场景并直接开始下一阶段即可(P2)
而玩家在选完英雄,经过几秒读秒后准备切到战场开战时的逻辑则相对复杂。如果玩家已选定英雄,则直接将玩家所在场景切换到已加载好的竞技场,同时在玩家对应竞技场的初始点创建好玩家已选择的英雄;若玩家没选择英雄,则在英雄池中随机一个免费英雄作为玩家选择的英雄,同样在竞技场相应初始点创建玩家已选择的英雄。在执行完跳转场景和在竞技场创建英雄后,还要将竞技场中玩家对应的英雄单位赋值给玩家控制的英雄(P3)
此外,为了方便玩家在战场中使用卡牌施放技能,可以在玩家英雄的位置创建一个不可移动、无敌、透明、无法被搜索且逻辑隐藏的隐形空气小精灵,注意数编里的默认单位状态要配置好(P4)
或许你已经注意到在前面编写的服务端逻辑中,每秒钟都要向客户端发送一个更新阶段UI的事件信号——这正是为了为玩家实时更新显示阶段和时间。因此每秒钟客户端收到这个事件时,都要有对应的逻辑实时更新为玩家显示的阶段和时间(P5)
来到客户端,这个触发器的一个重点是将剩余秒数正确转换成显示的分秒数。将阶段剩余秒数除以60取余为显示的秒钟数,而将阶段剩余秒数除以60并向下取整得到显示的分钟数;这里还要注意,当秒钟数显示不足10的时候,要进行一个加零的转化,例如2分7秒,把显示的"2:7"转换成"2:07"。因为此方法在服务端计时器生效时每秒钟执行一次,那么直接进行界面控件的赋值即可(P6)
锦上添花一下,当剩余时间少于15秒时时间字体用红色显示,最后5秒对玩家显示提示信息(P7)
看看效果,没bug,OK!(P8)
那么这一期就到这里啦,希望能让你的星火直播有所收获。感谢耐心看完及点赞的小伙伴,我们还是下期见哦!
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap