下载 App

跟着元气学编程【4】:相机跟随

2022/10/06141 浏览综合
首先就是我又又换了一种随机移除房间的算法,也就是说上期确实什么都没干。我本来打算这期写如何卸载unity的,因为每次运行都有几率直接崩溃,根本没法调试。直到我搜到了一篇文章,里面有人跟我有一样的问题。答案也很简单——检查并删除无限循环。
在程序里面到处乱看,寻找可能的无限循环。最开始觉得是一个使用递归检查的函数可能会无限循环,但仔细一想又不对,无限递归应该会抛栈溢出的异常,而不是直接崩溃。我尝试下函数断点,可是真的找不到,而且很恶心的一点是,程序断开单步执行不会崩溃,如果想单步跳过看接下来的操作,那出大事了,直接崩溃。
几天里我都是一边喝水,一边抱着必死的心态开启一个个调试。我和断点四目相对,单步跳过的按钮怎么也按不下去,按了unity裂开,不按我裂开。在unity裂成丝的时候我决定换个算法,解决bug代码的最好办法就是直接删除。
但是这算法怎么换呢?我想到上次的思路是建立房间与map的联系,那直接在map里搞得了。还是使用递归的方法,就是头铁怎么着吧。
TapTap
TapTap
头铁的后果是同样的情况再次发生。但这次不能再耗unity和电脑的阳寿来调试了,我选择设置个临时变量times,一旦被调用次数超过50次就抛异常,强行终止运行。上面给出的其实已经是当前算法的完整版本加上曾经的调试。中间发生过很多曲折的事情,每个注释都是血的教训。
不得不说map版本的递归路径检查比上次简洁很多,因为它没法正常运行。我最开始就想错了,这样完全无法检查路径连通性,而且还导致了诡异的bug:绘制房间时有房间的中心点是重叠的。我不知道这个算法和更改中心点有什么关系,我根本就没碰过。怀疑是GetCurrent的锅,因为我改成这样了。
TapTap
暴躁嵌套,极致享受。反正封装起来之后就看不到了,看不到就没有了。目前还不知道这玩意能不能正常运行,我现在哪些代码能运行都不知道。不想思考怎么修复了,我再换个随机移除的算法。
TapTap
以上是我的新想法。这个想法最简单了,因为想到这个算法时我的脑子抽得最厉害。我简单地想着被移除房间也是连着的(可能是因为之前测试不完整算法时移除的房间总是连着的,导致我被误导了),所以直接随机选个点作为种子,然后围绕这个种子进行移除。效果倒也有,而且很丝滑,错得很丝滑。
(录了这么长的原因是中间竟然连续成功了几次)
等一下我发现了个问题。“被移除房间是连着的”这个命题不成立,但是“正常房间是连着的”这个命题肯定成立啊,那我们……
TapTap
直接拿上面那个算法去生成不就好了吗……这也是最开始的算法,好家伙三期白干。
写完了,目前运行良好。还有另外一个好消息,GetCurrent函数因为新的算法得以缩减成一行代码,终于摆脱了死亡嵌套。等我再写个房间随机大小和过道和特定起点终点房生成和人物出生点传送《就》可以结束了。
9月22日开始写的代码,现在已经是国庆了。稍微写了一套随机房间大小的代码,不仅结构混乱代码丑陋,效果也很诡异,因为我把参数调太大了,导致生成的效果就很……放几段让大家感受下。
(竟然成功了一下)
参数调小一点就不会这样了。可是并没有从根源解决问题,有关间隔长度的问题还是没解决。不想这期搞了,根据这么多期的经验,反正下一期就把上一期的代码删的差不多了,不如直接留到下一期。单纯随机房间的效果如下。
我觉得还行,目前为止最接近原版的算法。就这么结束了吗?还是再塞点内容吧,顺便做个相机跟随。
在远古时期,相机跟随是要自己写脚本的。随着时代的变迁,unity官方推出了cinemachine,让相机有关操作变得非常简单(甚至还能用unity拍动画电影,但是好像没必要)。
直接去package manager搜cinemachine下载就行了。接下来的操作……等一下让我看看文档,我也不会(・・;)
啊懂了。安装后gameobject选项中会出现cinemachine,点击选择virtual camera后点到新建的virtual camera的inspector,在follow字段把要跟随的物体拖进去,就完事了。
等下,就完事了?这么简单?事实证明确实如此,如果我们只想要跟随这一个功能。目前效果如下。
甚至连摄像机缓冲都给你准备好了。有史以来最快乐的一期。最后贴个代码,这期就结束了。
TapTap
TapTap
TapTap
不记得在哪看的了,说异常比较影响性能。感觉应该把GetValue改一下,不过用的不多可能不会有太大影响。
事实上C#里的迭代器并没有跟我一样实现的这么潦草,内部是一个类似于状态机的东西。懒得改了,我就说我的这个东西是盗版迭代器。
下期继续搞地图生成,估计还做不完。我已经做好写1年的准备了,中途穿插别的东西,跟这期一样。题目统一写除了地图生成以外的内容,关于地图的编不出来了。
TapTap
新赛季小技巧截图
新赛季小技巧
将武器修复后再售出,可以获得更多的钱σ(。•̀ᴗ-)σ 以上图为例
1 赞
7 回复
01:43
疯猴岛最快获得其他角色攻略截图
疯猴岛最快获得其他角色攻略
除了一些固定点位的角色之外,其他的角色会随机生成在一些地方。其中潮汐岛这片刷新区域极多,按照我这个视频的步骤一把下来能很快的获得其他角色。(顺便提一嘴,这里面所有角色都有,但只有你拥有了那个技能,你才能使用此技能)[表情_吃瓜][表情_吃瓜][表情_吃瓜]
8 赞
5 回复
11:46
打僵尸活动,无需氪金技能,稳过阵容截图
打僵尸活动,无需氪金技能,稳过阵容
核心二叉树和藤蔓#元气骑士
5 赞
11 回复
00:53
元气骑士赛季模式个人速刷路线及个人心得截图
元气骑士赛季模式个人速刷路线及个人心得
选角:忍者(隐身加速,破隐加伤害) 武器:3孔永久魔法弓(想要3孔,制作前可以保存存档,没做出3孔回档sl,所有武器制作应当都通用这个方法,我的镶嵌是溅-入定-拷贝,目前还没刷到更好的) 护符:超级散弹-动能打击-分裂弹(没注意有没有用)-精准打击(这个制造应该也可以sl,我没试过) 选择该路线原因: 这里的物资种类相对于其他地方算是挺多的,而且有2个箱子刷新高级物品概率很高(比如红包红甲,金包金
8 赞
12 回复
03:13
枪客三技能截图
枪客三技能
四种攻击模式,一:戳刺+戳刺+大戳刺(伤害比第二种高但是戳刺的方向为你摇杆方向不好控制) 二:横扫+横扫+大回旋(第三下会把枪像回旋镖一样丢出去伤害不高但容易打中,不会追踪敌人会来回一下) 三:戳刺+横扫+戳刺或横扫(这个是最六的组合,一段戳刺会有短暂无敌,同时伤害不俗还会在背后叠枪,这个组合冷却也非常短在各个方面都可以媲美剑二,如果背后已经有枪会发射出去一到两把,这个背后的枪必须周围有敌人才能发
3 赞
05:42
萌新向手刀快速全收集截图
萌新向手刀快速全收集
#元气骑士手刀 角色:超界者(陈旧的轮椅) 键位:技能左上角(食指舒适区点击) 因子:冷却≥气功≥冰盾≥护盾类≥近战类(暴击技能等等) 打法:进入任意小怪or boss房,靠近怪物后释放技能,右手食指中指交替A即可 注意:1、有技能的时候猛攻,没技能的时候龟缩,主打求稳。2、未开炸天的纯净试炼时间较短,不要在中途浪费时间,否则会跟up一样第一次打到3—4就没时间了 手刀收集顺序推荐:金~红~紫绿
3 赞
2 回复
00:54
看好了,这才是真正的万剑归宗!截图
看好了,这才是真正的万剑归宗!
#元气骑士 #元气骑士武器 #元气骑士全版本
11 赞
3 回复
00:22
这是bug吗?截图
这是bug吗?
不知道啥情况突然变小了,取消技能后正常了,就是这突然变小差点给我送走。
1 赞
1 回复
02:16
宠物孵蛋人截图
宠物孵蛋人
#元气骑士 #游戏日常
1 赞
2 回复
噬魂伞截图
噬魂伞
神话武器 攻击力 能量 暴击 偏移 12 0 15 0 命中敌人有20%概率吸取目标的「灵魂」,每拥有「灵魂」伤害提升,特殊攻击键消耗所有「灵魂」攻击 普攻:向前方挥动噬魂伞(伤害12,暴击24) 「灵魂」:被吸取「灵魂」的敌人攻击力减2,每拥有一颗「灵魂」使噬魂伞造成的伤害提升5%,可储存6颗 (进入下一关时清除) 特殊攻击:消耗所有「灵魂」发动扇形冲击,(近战伤害)「灵魂」持有越多,造成伤害
13 赞
6 回复