ssRender 引擎游戏项目(5)

概述:

基于上一篇文章的内容,对逻辑(表达式)进行优化:当英雄进入场景4后怪物被攻击特效覆盖时英雄不掉血、特定怪物掉血、英雄血量掉到固定值才会更新形象、商店老板对话框逻辑;增加场景4怪物形象、BOSS、删除Plugin更换/增加事件:PropertyChanged。

效果:

在这里插入图片描述

更新内容:

表达式和事件:

Hero节点增加自定义属性Num,表达式中Num替换Plugin属性
Num范围限制在1~4,分别用于控制Hero人物的上下左右方向

在这里插入图片描述

在这里插入图片描述

Monster_BOSS节点增加绑定表达式和PropertyChanged事件
用于控制当前节点的显示和隐藏,PropertyChanged事件用于判断自身的Visible属性,当属性发生变化时,执行编辑器中的表达式。

在这里插入图片描述

Monster_Move_1节点更新表达式
在这里插入图片描述

var B_160256 = {$../Barrier/160_256_Visible/Visible}
var HX = {$../../Hero/ShowX}
var visible = {$./Visible}
(B_160256 == 1 && HX == 128 && visible == 1 ):{$./Y} = {$./Y} +32
(B_160256 != 1 ||  visible != 1):64

更新LP自定义属性的表达式,优化了逻辑,无论怪物在英雄的上方或下方只有攻击特效覆盖到怪物时(XY相等时)怪物才会消失,并且攻击到怪物,和怪物无视攻击特效走到英雄的位置是不一样的。当怪物被攻击特效覆盖时不会掉血。(英雄在血量小于等于40时才会更新形象)

在这里插入图片描述

var AE = {$../../Hero/AttackEffects}
var hx = {$../../Hero/Attack/X}
var hy = {$../../Hero/Attack/Y} 
var L = {$../../HeroMassage/Leverl}
var sumy
sumy = hy - {$./Y}
(AE == 1 && hx == {$./X} && hy == {$./Y} && L == 4 && {$./Visible} == 1):1
(hx == {$./X} && hy == {$./Y} && L == 4 && {$./Visible} == 1):1

Text_Shop节点增加事件和自定义属性

number自定义属性用于循环自身,主要是被自身的PropertyChanged事件调用,让PropertyChanged事件中Property属性number一直在变化。
让PropertyChanged事件编辑器一直在执行其中的表达式

在这里插入图片描述

更新LP表达式,用于获取英雄的血量和当前的关卡,进行判断从而改变自身的值。

在这里插入图片描述

PropertyChanged事件主要用于控制Hero节点的Source属性,根据判断条件设置英雄当前的形象

在这里插入图片描述

var LP  = {$./LP}
var show = {$../../../Hero/Num}

(LP == 1 && show == 1 )setProperty:{$../../../Hero/Source} = "Hero_Leverl04/Hero_Demon_15.png"
(LP == 1 && show == 2 )setProperty:{$../../../Hero/Source} = "Hero_Leverl04/Hero_Demon_2.png"
(LP == 1 && show == 3 )setProperty:{$../../../Hero/Source} = "Hero_Leverl04/Hero_Demon_9.png"
(LP == 1 && show == 4 )setProperty:{$../../../Hero/Source} = "Hero_Leverl04/Hero_Demon_10.png"

(LP != 1 && show == 1 )setProperty:{$../../../Hero/Source} = "Hero_1/Up0.png"
(LP != 1 && show == 2 )setProperty:{$../../../Hero/Source} = "Hero_1/Down0.png"
(LP != 1 && show == 3 )setProperty:{$../../../Hero/Source} = "Hero_1/Left0.png"
(LP != 1 && show == 4 )setProperty:{$../../../Hero/Source} = "Hero_1/Right0.png"

Monster_Move_2节点Y属性表达式更新,根据上一个Monster_Move_1节点的显示于隐藏判断自身是否移动;Monster_Move_1节点隐藏时,自身又显示时,Y才会移动

在这里插入图片描述

更新LP自定义属性的表达式,优化了逻辑,无论怪物在英雄的上方或下方只有攻击特效覆盖到怪物时(XY相等时)怪物才会消失,并且攻击到怪物,和怪物无视攻击特效走到英雄的位置是不一样的。当怪物被攻击特效覆盖时不会掉血。(同Monster_Move_1节点LP自定义属性)

在这里插入图片描述

var hx = {$../../Hero/ShowX}
var hy = {$../../Hero/ShowY}
var y = {$./Y}
var L = {$../../HeroMassage/Leverl}
var Num = {$../../Hero/Num}
var sumy
sumy = hy - {$./Y}
(hy >= y && Num == 1 && sumy < 64 && L == 4 && {$./Visible} == 1):1
(hy < y && Num == 2 && sumy > -64 && L == 4 && {$./Visible} == 1):1

新增PropertyChanged事件,当LP自定义属性发生变化时,执行编辑器中表达式;也就是让下一个Monster_Move_2节点Y开始移动。

在这里插入图片描述

setProperty:{$../Monster_Move_3/Visible} = 1
setProperty:{$../Monster_Move_3/Y} = {$../../Hero/ShowY}

Monster_Move_5节点的PropertyChanged事件;让Monster_BOSS节点的LP属性等于1,其Monster_BOSS节点的显示和隐藏也是基于此条件判断的。
在这里插入图片描述

Monster_Move_2、3、4节点同理增加PropertyChanged事件,其编辑器中表达式内容也是相似的都是设置下一个Monster节点让它Visible=1,ShowY=Y,让怪物向英雄移动。

小结:

本次文章目的为了优化逻辑,增加怪物形象;删除了Plugin,全部使用事件和绑定来实现当前的效果;
PropertyChanged事件的使用在一些情况下比绑定更加便捷,但是需要注意的是Property所选择的属性一定要是有变化的。
当Property所选择的属性发生变化时才会执行编辑器中的内容,这里需要注意一下。
下次文章是本次游戏项目的最后一次更新:逻辑优化、增加人物血量为0的提示界面,人物选择界面……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值