粉丝说想让他的蜘蛛侠游戏刺激一点,这就安排三步,让他变成真正的空中飞人。第一步,会制长方体,打开一个新代码,准备几个常用的坐标转换函数。 会制长方体时,根据观察者与顶点坐标画出各个面来测试一下,看看效果哦。 第二步,搭建城市场景,准备两个数组,存储楼房信息,删除视野外的楼房,并生成新的, 依次把马路、楼房、路灯绘制成场景,这就做好了哇!第三步,蜘蛛侠登场,给游戏加入重力效果,鼠标按下时发射蜘蛛丝,记录目标点坐标, 再把发射动画和蜘蛛丝画出来就完成了。还有什么想看的,欢迎评论区留言!
粉丝3080获赞1.5万

大家好,今天我们来创建一个简单的技能释放状态栏,主要通过键盘数字键和鼠标点击操作实现。 下面开始新建一个测试场景,命名为 test scene。 增加一个 label, ctrl 加 d 复制 label, 拖拽到屏幕中央, 修改对齐为居中对齐,字号大一些,方便观看。另一个 label 也修改一下,因为没有做技能特效。这两个 label 用来查看操作效果。创建一个脚本, 删除默认方法,给 label 改名,分别为 skill label 和 key label。 按住 ctrl 拖拽到脚本。新增一个参数, skills, 保存已设置的技能 id, 分别为 slu 一、 skill 二和 skill 三。新增 band skill 方法,用来绑定技能。新增 use skill 方法,用来使用技能, ctrl 加 s 保存。新建一个节点,类型为 panel, 命名为 slot。 切换到二 d 式图,设置最小尺寸为六十四乘六十四。 新建一个 text button 节点,用于鼠标操作。 修改对齐为整个矩形。新增一个脚本,删除默认方法,创建一个参数 status, 类型为 resource。 创建一个 label 节点,对齐方式为整个矩形。修改文字大小, 看看二十四,再看看三十二,不错,修改文字居中对齐要用到一点零零,这种格式有点大,改成二十四。新建一个 texture progress bar, 调整一下顺序, 重新对齐一下技能冷却时用它做倒计时效果 调整。 step a 零点零一 film mark 改为逆时针 texture 的 progress。 新增一个 gradient texture。 二 d 默认是渐变色,修改它的颜色区间,右键点击右侧的锚点,取消渐变,点击左侧锚点修改颜色。 这里只修改一下透明度,背景色有点撞色。给 slight 增加 style, 类型为 style box flat。 换一个喜欢的颜色 可以调暗一点。 调整 value 看看效果。后面要让它根据冷却时间变化先隐藏 texture progress bar, 创建一个 by and skill 方法,传入一个 status 参数。 新建 status 文件夹。创建一个脚本,命名为 skill status。 删除默认方法,继承 resource。 添加几个参数,分别为 skill id, skill name, skill icon, 还有 cool down。 设置 class name 为 skill item。 新建一个 resource 类型为 skill status。 复制两个 resource, 设置 skill id 为 skill 一, 我准备了三个图片,拖拽到 skill icon, 技能名称就叫雷霆万钧吧,冷却时间为一秒。 给第二个技能设置图片 id 为 skill 二,名称为飞火流星,冷却时间改为零点五。 给第三个技能设置图片 id 为 skill 三,绝对领域,冷却时间改为零点二。 新建一个场景,类型为 node, 命名为 skill manager。 新增一个脚本,删除默认方法,增加一个参数, skills 类型为 array, 这里主要保存 skill status, 回到 slot 节点。 修改 bend skill 方法,给 status 复制。将 texture button 拖拽到脚本,给 texture button 的 texture normal 复制为 skill icon。 新建一个方法, use skill。 在使用技能时调用新增参数, left time 记录冷却倒计时默认一秒,如果没有 status 返回未绑定信息, 当 texture progress bar 可见时,代表正在倒计时返回技能冷却中。接下来完成倒计时。新增一个捕监动画, 停止正在进行的补间动画。重新创建动画 trim property, 一 段时间内将指定属性修改为某个值, 修改 texture progress bar 的 y 六值从当前值变为零。时间为 cool time。 增加 train call back。 在 上个动画完成后,致信一个方法,将 texture progress bar 隐藏, 动画开始前修改,可见性为 true。 给 left time 赋值。 cool down。 增加内置的物理帧方法,将 label 拖拽到脚本,在物理帧中给 label 赋值。格式化。将浮点数转换为两位小数的字母串, 用百分号转换 判断使用 texture progress bar 的 可见性,如果不可见则改为控值。 给按钮绑定,按下信号鼠标点击时调用 use skill 方法。 调用 trim 的 parallel 方法,使下一个动画和上一个同时进行 trim property 修改, left time 为零,持续时间为 left time。 上一个持续时间也改为 left time。 为了方便做测试,将 status 改为 export 参数。 将 skill 一 status 拖拽到 status 上,测试一下。 多次点击时有异常。每次开启动画之前需要重置 left time 和 text progress bar 的 值。 修改完值之后再显示重新测试图片显示,过一会儿再查看。新建一个场景,命名为 skill panel, 类型为 ctrl。 新建一个脚本备用。回到二 d 使徒, 创建一个子节点,类型为 grape container。 准备四个技能栏位置,添加四个 slide, 调整节点的尺寸。 增加一个 color rect, 方便查看。重命名为 background, 增加一些间距居中对齐。 背景颜色调整暗一点,上下也留一点。编剧 修改脚本,增加 bind skill 方法,参数有 index 和 status。 将 grid container 推拽到脚本查看,如果字节点数量大于 index, 过去对应位置的 swap, 将 status 绑定到 slot。 新建 use skill 方法,根据 index 使用技能 将结果作为返回值, 返回失败结果。 默认方法,暂时不需要回到测试场景,将 skill piano 加入测试场景。 修改 band skill 方法, 调用 skill panel 的 band skill 方法, 需要获取 skills i 对 应的 status。 从 skill manager 中找到对应 id 的 status。 skill manager 无法调用。打开项目设置,点击大局,选择 skill manager 节点,不选脚本,点击添加,加个空格再删除,让编辑器反应一下,判断 id 相同。执行绑定方法, break 跳出循环一个 break, 跳出一级循环,加个等号。修改 use skill, 调用 skill panel 的 use skill 方法,返回调用结果。 增加一个新方法, skill start 接收鼠标点击时的反馈信息参数为 slot。 调用 slot 的 use skill 方法, 场景加载完成时绑定技能,测试一下没有绑定技能,查一下问题, skill manager 还没有给 skills 赋值。双击 skill manager 节点,给 skills 增加三个元素,将之前准备好的 skill status 放置到对应位置,返回 test c, 再次测试,报错了 skill id 获取异常。 这里问题是 skill 亦不是数组的脚标, 应该在循环时用 size 方法获取数组大小。 size 方法应该在 skills 参数上再测试一下,图标太大了。 到 slot 节点调整 texture button 的 纹理。对齐方式,正常啦,未绑定的技能不应该倒计时。 去掉之前测试时的 x part 修饰符可以啦。 到测试场景中调整一下技能栏的对齐方式。 增加一个 input 内置方法,判断 event 事件类型 处于按下状态和松开状态分别做不同处理, 让 key label 分 别显示按键松开和按下, 判断类型应该是 input event key 键盘按键获取按键的内容, 复制一份,改成按下测试一下,分别按下一二三四等按键,文字居中, 再处理一下按键操作,根据 key code 判断, t one, t, two, key, three t 四,分别调用四个技能栏。 调用 use skill 方法 测试一下返回值,报错到 swot, 找到 use skill 方法,返回技能名称, 重新测试,调用正常。接下来让场景显示调用结果。新增一个 success 参数, 接受 use skill 的 返回结果。给 skill label 赋值。 测试一下按键没有问题,鼠标点击没有反馈,通过信号调用 skill start 方法来实现。来到 skill manager 节点,新建一个 signal 启民 use skill signal, 回到测试场景,为信号绑定接收方法,在其他节点发出信号时可以执行这个方法。 切换到 slot 节点,按下按钮时发出信号参数是 self, 测试一下,这里调用了 skill panel 的 u skill。 回到测试场景,应该调用的是 skill start 方法,重新测试,显示还没处理,给 skill label 赋值, 给 key label 赋值。 再测试一下技能冷却时没有提示, 技能冷却时没有提示。检查一些各个地方的调用 texture progress bar 显示时会阻止按键接收点击事件。将 texture progress bar 的 filter mode 改为忽略,最后再测试一下,点击按键。 谢谢观看。

非常快,如果再把他的这个数字改一下,还能更快,这就是调节每个关卡的这种啊,几个变化的地方, 所以这里讲解一下。因为我要做的是只是一个最简单的一个模型,他没有第一关、第二关,但是这种第一关、第二关这种调整的方式啊,就是这样的, 我们做到这里发射子弹,上次我们做到发射子弹这里接着往下做,那子弹做完了,下边我们要做生成敌人, 既然有生成这两个字,那肯定有时间的,对吧?多长时间生成一个敌人,它是有限制的, 所以我们先应该要添加这个时间,添加完时间之后,然后这个敌人应该随机降落, 所以我们要在这里用到一个随机的一个工具,叫 random。 所以 在代码里,我们想实现一切功能都有相对应的工具, 所以写代码就是学习用哪些工具实现哪些功能的这样的过程,而不是被违反。就像现实的世界里,你要做饭就需要电饭煲, 对吧?你钉钉子就需要有锤子,现实里如此,那个代码里也一样。但重要的一点,你知道做饭需要电饭煲,但也有很多人还是不会做饭的, 所以重点是什么?这需要你亲自动手做过,你才能调整好水量,才能做出好吃的饭米饭。那写代码也是如此,不仅代码,一切事情都是这样。 这个 random 啊,是 python 自己带的这样的库,所以安装过 python 的 人,那么就不需要另外再安装这个 random。 那我们在这这里已经创建了一个敌人的库,我们需要在下边啊做出一个表,做出一个秒表,类似于这种计算时间的计算,多长时间生成一个敌人,所以我们先要给他出使唤, 那么敌人这里用开门吧计时器,比如说取名字可以随便取,但是必须要你自己看的懂才行, 嗯,你取了一个名字,但是过几天你自己看代码的时候,如果你都搞不清楚这个名字原来是什么,那么这个取名字就并不算是一个好的名字。我们可以在这边,敌人啊可以写上秒表也行,但是秒表这个太长了,用 camera 敌人计时器,然后它的值现在就是在零的这个状态啊,我们做完这个计时器之后,我们给它生成敌人,那么敌人 timer 大 于等于啊加,等于,如果敌人的 timer 大 于等于六十的话, 添加 list, 在 这儿加入插入,插入什么?插入 rending 的, 这个用 rending 库, 嗯,用 random int 这个方法,用这个方法呢范围是从零到 sides, 嗯,宽度是四百,四百之后我们要减去机身四十, 然后需要这是 x, 需要有 y, 零在最顶部零,然后敌人的开门跟从零好,也就是说 就是我们计时器加一个一个数字,一啊,这个是开门,这个计时呢是用针算的,也就说加一针, 一秒有六十针,那么一针,然后如果这个计时器大于等于六十的时候,也就是说到了一秒的时候,那么我们在敌人 list 这个列表里, 也就说在这个列表里,敌人的库里边插入一个随机降落的这样的敌机, 然后降落完之后,降落完之后我们要把这个零呢初步化,因为我们下次还要生成一个敌人,不断的生成,直到游戏结束, 你不把它变为零的话,那么他就没办法再重新计算一个六十,他没就没办法再生成一个敌人,对吧?可以理解吗?然后这里边 opend 是 插入插入,然后这边要需要理解这一点, opend 我 说过。嗯, 首先我们看一下这个 opend 是 方法,那么方法后边是圆括号,圆括号,那么这个方法是插入,那么圆括号里第一个位置我们应该要放什么?插入的话必须要有什么核心?核心参数是什么? 核心参数是什么?插入必须有什么?必须有位置,对吧?插入哪里啊?这个呢?是一个逗号,后边是一个,也就是说哪里的话,他肯定有位置的,这个是 s, 这个是 y, 能理解吗?为什么这么写?我们看一下这个降落提刃, 对吧?那么这个位置他的 y 始终是零, y 始终是零,然后变的是什么?变的是 x, 也就是 x 坐标刚开始是零,然后他随着往这边走, 他的宽是四百,也就是随机产生的,也就是可能是这,也就是可能是这,也就是可能是这,能理解这个部分吗? 那他随机产生的时候,我们从这个零这个部位,然后还要减去一个机身啊,一个机身的这个宽度,因为不减去机身的宽度的话,机身就在这个位置了啊, 所以我们要减去他机身的这个宽度,让他不能够脱离窗口之外,所以在这个部位减去四十,那么塞子零他取的就是我们这个转,我们这个窗口呢。呃,第一个参数就是宽度,宽度多少就是四百, 能理解吗?然后我们做完这个部分之后,我们应该要给他移动,让他动起来, 那么移动呢?是跟他这个上边的这个部分一样的,我们需要前拷贝敌人的库,所以他的代码格式跟上边子弹是类似的,敌人 list 方括号,方括号的冒号,这也是一个前拷贝。 呃,这个必须要有方括号里边的冒号,这个前拷贝必须有这个我们才可以一边便利,然后一边可以修改里边的一些内容, 然后呃,敌人这也是取一,但是他这边需要加三,加等于三,为什么这么写? 那么在这个位置为什么我们需要这么写?这边是减,这边是加,因为 子弹是从这个位置发射发射出去的,对吧?所以我们要从这个高度五百里边一直减去,减去,比如这个数字七,这样 子弹才会接近 y 这个零,这个坐标越来越近,他才会形成一种往上发射的这种效果,能理解吗?那么现在呢?哦, 敌人的敌机我们要形成下落的这种情况,那就要需要从 y 等于零坐标里从这开始加, 比如这个零,现在坐标是零,你加三,他就移动到三这个距离,然后你再加三,他又落到加三的这个距离,直到达到最底部五百消失,能理解吗? 所以我们这个地方敌人加三,然后如果敌人再取宽度啊,再取高度,然后比如他大于 大于他的这个高度,懂吧?也就是说大于五百,那么我们要把敌人怎么样移除?因为他碰到最底线了,敌人就要消失,他一直卡在那的话,不可以,对吧?所以用什么? 用?李木木啊?移除的这种方法,那移除的方法圆括号里他就需要有核心参数,核心,那移除的核心参数是什么?移除,那么你就需要有移除的对象,对吧?那移除的对象是谁?敌人,把敌人消除,他明白这个逻辑吗? 那我们写完这个之后,然后最后就让他显示就可以了,对吧?那么显示的时候,因为他是动态的,所以也跟子弹一样,我们要一边便利他,然后一边把他画出来,也就跟这个格式是差不多的。 哦哦,敌人,敌人, east, 那 这边我们不需要修改删除,所以我们指便利,然后画出来就可以了,不需要这种方括号的冒号,这之间的这两个的这两种的区别,我们一定要区分它, 不然有的时候容易搞混。然后呢? screen 里面用 delete 把它画出来,那么画的对象是谁? delete 是, 既然这个是画嘛,那画的话肯定有想画的对象嘛,对吧?所以核心参数第一个位置是什么? 敌人,敌人,可以吗?不可以,因为我们需要的是敌人的照片吗?你记啊,用它画出来,然后第二个参数,我们需要写他的呃,坐标,那么敌人坐标 第一个与敌人的第二个坐标,也就是说他随机插入的这个位置。坐标啊, 我们需要把他们传进这个里边,然后画出来,那么既然下边写了这段代码,那上边我们之前写过的这段代码,我们就可以把它删除了,然后我们运行一下, 出了一个问题, augments 啊,这个是我们,我们需要在这个列表里 啊,他插入,我们看一下。上边他插入的对象呢?是 有他自己的坐标的啊,但是他自己的坐标呢?我们需要在一个整体里边,因为第一个就是核心参数不能有,有两个如果像刚才那么写的话,就变成两个参数了,而且圆括号里直接套圆括号,他是等于是没有的啊。所以我刚才这边出了问题,我们需要写在这个列表里,所以这个位置, 这个位置是 x, 这个是 y。 啊,是这样, 那我们重启一下,敌人随机产生了,但是我们看一下,你看敌人和我们随机穿过了,对吧? 我们下一次要做一个碰撞检测,比如子弹碰到敌人,那敌人消失,子弹消失,如果敌人碰到我那个我们的玩家飞机,那么游戏结束我们需要做这一个部分, 但是我们有没有发现一个问题,这个敌机好像是从这个部分,好像是从这个部分显示出来的,对吧?我们需要让他从这最顶部感觉从上边往下来的这样一个效果,那我们应该怎么修改?他把这个零零是最顶部, 零是最顶部,但是我们有机身的这个高度,所以看着他就是 最顶部下来的一点的地方产生。那我们在这边写一个机身,我们看一下机身大概破口,敌人的六十啊,那我们减去六十, 我们再看一下,感觉他是从这上面然后往下降落了,对吧?然后我们看这个飞机,他现在有的时候是从这边中间劈成一半了,然后他才显示这边,我们需要给他改一下, 嗯,他这个是八十宽八十,所以我们这次看一下有没有从边上被砍掉的, 没有。然后在这个部分还可以调整一个地方,比如他下落的这个速度,比如我们刚才他是一秒生成一个,对吧?但是我们可以让他半秒生成,嗯,时间在哪里?半秒生成一个 好,它就随机产生更多了,对不对?如果你想让它降落的速度再变快一些,那我们就可以改它这个部分,它现在加三,对吧?我们看变成加七,看它效果会怎么样 啊?非常快,如果再把他的这个数字改一下,还能更快。这就是调节每个关卡的这种啊,几个变化的地方, 所以这里讲解一下。因为我要做的是只是一个最简单的一个模型,他没有第一关、第二关,但是这种第一关、第二关这种调整的方式啊,就是这样的。

大家好,我是李东旭,主做小游戏开发,今天呢,为大家带来一款高适配商超业态,主打会员锁客与线下引流的微信小游戏超市经营小游戏, 它不同于竞技类产品,这款游戏是以模拟超市运营加线上线下联动为核心, 精准贴合连锁超市、社区便利店、生鲜商超的营销需求,也能满足创业者的布局啊,这种生活类轻运营赛道的规划, 适配门店引流、会员激活、节日促销、新品推广这种多场景。接下来呢,我从核心玩法啊,他的功能、差异化、创新点及落地推广策略逐一拆解。那么让大家清晰的掌握该项目的价值和落地路径。 先讲他的核心玩法,他整体定位呢,为轻量级的超市模拟经营游戏,兼顾趣味性与实操性, 完全适配微信用户的碎片化娱乐习惯。同时呢,深度复刻真实的超市运营逻辑,绑定线下商超场景,玩家将扮演超市经营者, 核心目标是通过合理进货,优化货价陈列,提升收银效率,维护会员客户,实现超市营收增长与规模升级,最终打造区域爆款商超 啊!游戏流程呢,贴合真实的经营链路,从初期的社区小超市起步, 主营比方生鲜、日用品、零食、基础品类。那么通过接待顾客,扫码收银,及时补货,形成了一个完整的服务闭环, 积累收益后呢,可以解锁更多品类,扩大超市面积,新增啊,这个收这个自助收银系统,及时补货,形成完整闭环,积累收益后呢,解锁更多的品类玩法维度呢,丰富啊,他且有梯度, 顾客分为普通顾客对吧?会员顾客、批量采购顾客,那么普通顾客需求零散,消费频次高, 会员顾客呢,追求的是折扣福利啊,复购意愿强,可解锁专属优惠对吧?批量采购顾客,比如家庭小型商户,单次消费额度高 啊,对货品库存、配送有时效要求,考验玩家的统筹能力。 货品体系分为基础民生款、爆款、引流款、限定促销款、基础款,保障日常营收。那么爆款呢,引流需精准把控进货量,避免积压。限定款可结合节日新品推广更新, 对吧,形成营收积累、进货扩容,优化陈列,吸引客流的用户闭环。同时呢,设置顾客满意度、评分评分关联会员留存率,逗比玩家,优化运营细节。 接下来我们重点拆解它的功能,全程围绕着定制化的啊需求设计,深度适配商超品牌线下店的这个合作啊,这个场景技术成熟 且落地比较高效。首先呢,是超市和这个货品系统预留全维度自定义接口,创业者可按需调整超市的业态,比如是生鲜超市、便利店还是综合超市?那么货品品类呢?与定价 企业客客户可以直接将游戏类的超市这个产品替换为自身品牌啊,门店形象 货品呢,替换为门店爆款单品、自由品牌这种商品呢?货架、架签、购物车、收银台这元素都可以植入你的 logo 啊与视觉体系, 甚至可以在货品陈列、扫码收银动画中融入品牌特色,强化品牌的这个认知与记忆点。 其次就是运营与交互系统啊,核心呢,还原真实超市运营流程,支持个性化的配置经营规则, 比如调整顾客的到店高峰时段,货品损耗率,会员折扣比例,可根据到店实际需求定制专属玩法,比如设置到店核销 赠游戏积分、会员消费满额,解锁这个游戏专属货架,新品扫码试吃、同步解锁游戏限定货品啊等联动机制。 同时呢,也可以搭载库存管理、进货管理功能,玩家根据销量预判进货量,及时处理临期货品,优化货架陈列位置,贴合真实运营逻辑,提升游戏代入感和实操感。 数据与联动系统是核心亮点,采用成熟的技术搭建,确保经营数据实时同步。后台呢,可以统计玩家游戏时长, 货品解锁率啊,超市升级进度,会员激活率,分享裂变数据等, 为合作客户提供完整的引流效果与会员运营反馈。同时支持打通线下与线上的这个啊系统。 那么实现游戏这个内的积分啊,优惠券到线下消费深度绑定同步会员信息啊,整体开发呢,这种游戏大概就两个月左右,可也可以根据你的这个合作需求啊,灵活调整功能模块, 比如你可以新新增一些你想要的功能,对吧?那么这样的话呢,就是打造这样一个啊,一个系统, 那么呃,除了以上的这个玩法呢,创新玩法是你的关键,我们可以有一些突破性的,比如第一是线下会员联动玩法,打破线上游戏与线下商超的壁垒,玩家在游戏中解锁积分,货品折扣券 啊,可线下到店合合销使用。那么同时呢,线下会员到店消费后,可获获得游戏类的专属道具,如进货折后卡啊,货架扩容权限,限定货品解锁资格,形成线上激活到线下消费的啊,这样一个闭环, 对吧?第二是液态深度,这个定制支持按商超类型,比如节日的啊,专属场景啊,比如说不同的冷链呢啊,还有植入这个,比如肉类啊这些元素,中秋和春节也可以做一些元素, 对吧?第三呢,是运营策略多样化,咱摒弃单一的但点击操作模式,加入进货成本控制、临期货品处理、货架黄金位置分配会员这个分级运营这些策略,他提升游戏的可玩性,也能 啊,间接传递品牌精细化运营的理念,对吧?第四个呢是社交互动玩法,支持邀请微信好友组队经营, 是吧?这个互相赠送这个货品道具,这样呢,也是实现一个裂变的一个方式 啊。那么最后分享高效的落地推广策略,精准适配商超品牌线下门店需求,确保引流效果与会员转化率最大化。 其一,深耕微信生态裂变是吧,营收排行榜,现地福利玩法,引导用户邀请好友 参与游戏,分享到朋友圈,再把它引入过来。其二呢,线下场景可以做精准出答,在你超市的门口收银台张贴游戏二维码引导到店,那么顾客扫码玩游戏, 达到指定经营兑换小礼品的这样一个效果,对吧?所以如果你想做这样游戏呢,你可以私信我们共同探讨。