无名 发表于 2022-5-8 14:07:51

【技术教程】全屏秒杀是如何炼成的?


今天给你们带个调皮的修改教程,本来打算给你们开个直播教你们搞搞游戏的,一直来都没有时间。

给大家来个 来个。全屏攻击的修改教程和思路。
全屏攻击?这么秀的吗。http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AKyafAAAE2z30yYo697.jpg
例如:
一枪过去,所有人都中枪。大概就是这么个意思~

ok,进入正题。首先选了个射击的游戏,之前搞过的一个游戏

老规矩dll拖进来准备开干了哦http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AX68VAACQIUk7fcA859.png

打人嘛,打人会干嘛,肯定是这样啊http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AMtdKAAAUb5SgirQ222.jpg

喷血嘛,常规HPhttp://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AW6mDAAA_yyuCBAc677.png

发现有两个比较敏感的类,翻译一下是玩家控制器和敌人数据。http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AJZHKAAAbrmy3S4c704.png

首先自己要理解,(开启无脑递归循环模式)
1. 枪打在怪物身上,怪物会扣血
2. 怪物扣血游戏界面会刷新
3. 游戏界面刷新要拿到怪物现在的血量
4. 拿怪物血量要GETHP

妈呀我真是个小天才http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AOOAXAAAKGRWpo7U991.jpg

言归正传,进到 敌人数据 的GETHP看看代码http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6ABNjAAAD1IfAlQQk647.png

一顿分析猛如虎,一看战绩0杠5。好吧 又是return大法,分析一下好像这个东西不是我们要找的东西。


等等,等等http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6ANFl8AAADCAxa_A0735.jpg

敌人数据上面,藏了个敌人控制器,好东西好东西。http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6Aaw71AAAs2G7G27c289.png

容我进去观摩观摩~http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6Afd3UAACGXMH_EkA985.png
看到了一个大大大大的SetDamage。这不是设置伤害的函数吗,这在怪物控制器里设置伤害。很明显就是给怪物扣血啊
http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AUfs3AAA1TlakdQc726.png
看看执行了什么东西,一进来传进一个伤害,先对怪物血量进行一个扣血
过后判断血量是不是还大于0。大于就正常显示被攻击动画,然后刷新界面中的血条。
若死亡< 0 则走Dead死亡函数


上面就可以无视了,我们去看看死亡函数http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6ACg_4AAA-C0sPlLw146.png
这里的函数就有点杂,简单给大家分析分析好了
首先进来 先拿到死亡僵尸的id
给僵尸一个死亡动画的速度为1秒(啊啊~我要倒地了)
然后开始播放,321开始倒地~

最后销毁角色地上的模型。

大概执行的流程就这个东西。
其中RemoveFromNavi这个函数,是用来遍历僵尸id是不是死亡的僵尸。
简单来说就是从僵尸堆里面找到你是不是死了,不是就下一个。
http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AQ26bAAAaF36AX_I020.png
其实重点还是这段代码,僵尸对象是用一个数组存起来的,for可以将每一个对象拿出来做操作。
这里先放一放,我们看看哪里给僵尸扣血了
http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AN0KZAAAzaVHrfFg807.png
这里居然有个shoot的关键词,这不是射击的单词吗,偶好吧,看到这里我就知道我们这一期快结束了
http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AQsqtAAAeaYoWvRM740.png
首先进行一系列的判断,判断是不是能开枪吧之类的,如果条件成立的话就开始给僵尸扣血了。

首先一些基本的知识大家可以去学习一下,Unity3D的游戏对象是一个叫GameObject的东西。
比如看到的一把枪啊 一个人啊。都是一个GameObject对象。

这里首先拿到一个http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AVrr_AAACjpV3dA0443.png
被攻击的对象,然后绑定一个脚本,脚本叫做EnemyContorller,也就是敌人控制器
对象要执行EnemyContorller中的SetDamage给怪物进行一个伤害

我们前面可以看到一个代码就是,for便利出每一个僵尸的GameObject对象,我们就可以在这里用上了http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6AWWpcAAAzRmXH7-c375.png
这里就非常讲究了,首先你先给你打的对象打一枪不变。
然后,我们循环每一个僵尸,给在场所有的僵尸来一枪,兄弟,来快活啊~来造作啊~

嗯?开不开心?紧不紧张?刺不刺激?
赶紧保存进入游戏看下效果
http://cdn.u1.huluxia.com/g3/M03/59/13/wKgBOVsU_J6ASaVSAAG9iN5mrvU172.jpg

看见没有,我就打一个僵尸,后面的跟着突突突~偶爽~

ok,简单的小试手 思路和实操送给大家。
页: [1]
查看完整版本: 【技术教程】全屏秒杀是如何炼成的?