凌灵道:“当然!” 她心说自己就是游戏开发者,要是还找不到出口,那岂不是要被笑掉大牙?虽然这个关卡不是她做的,但还是不能忍!这涉及到程序员的尊严! “其实……” 凌灵喃喃道。 其实凌灵还有个办法,那便是撞墙,其原理还是利用了碰撞检测。 因为游戏的运行需要节省资源,所以碰撞检测并不是连续的,而是每隔一段时间才会检测一次。当然这个时间间隔会非常的小,控制在人眼察觉范围之外,比如每帧一次,即1/24秒。 碰撞检测的原理,是计算两个碰撞的物体之间有无重叠,如果重叠了,就把玩家推回去。 同时,游戏中角色的运动的计算,是在原有坐标基础上,再加一个小小的运动偏移量(dx, dy, dz)。即意味着运动并非连续,而是离散[1]的。 学过初中物理的朋友们都知道,位移(运动偏移量)= 速度 * 时间。 所以,当两个物体之间相对速度较小时,碰撞检测比较精确; 当速度变大时,碰撞的重叠就会增加,可能会出现游戏中穿模的视觉bu; 当速度继续变大,大到运动偏移量直接超过结界collider的厚度,碰撞检测就会直接跳过,认为玩家和物体之间没有发生碰撞,进而产生穿墙的bu,凌灵也就能因此顺利穿过结界。 那么,究竟要如何实现这个bu呢? 答案就是——需要凌灵不断高速用头撞墙。 虽然说,穿越之后的游戏世界为了无限逼近真实,肯定将帧数和算法精度都提高很多,但其底层原理就是如此。 只要撞的次数够多,力气够大,速度够大,那就总有一次,能够实现穿墙的概率嘛! 但是,凌灵摸了摸自己的脑门,想象着她头破血流的样子,觉得不可以接受…… 而且她现在可是有痛觉的啊!!!她又不是受虐狂,干嘛闲的没事撞自己?!!要是疼痛可以忍耐,她最开始就直接找林修坦白身份,挨他千刀万剐了!何必还要费劲吧啦的通关副本帮林修练级? “不行不行!这条路绝对不行!” 凌灵想到这里,使劲摇了摇头。哪怕自己最后不得不为了那个坑爹的目标死在林修手下,但在过程中也一定要好好爱护自己。 雨冥渊奇怪的看她一眼:“你没事吧?” 凌灵打个哈哈过去了:“小失误,小失误。” 心想既然不能搞邪门歪道卡bu,那还是乖乖从逻辑链上找思路吧。于是凌灵搬块石头坐到雨冥渊面前,道:“来吧,咱俩理一下思路。” 理思路,是凌灵多年编程生涯养成的习惯。 以前凌灵遇到问题卡住时,就喜欢随手拉个人过来,跟他或她讨论一下,而往往就在描述问题的过程中,凌灵便能自己找到答案。 后来凌灵才知道,原来这种方法还有个学名,叫做小黄鸭调试法[2]。 据说上古时期,功力深厚的程序大师们总会随身携带一只小黄鸭,遇到bu时,只要向鸭子逐行解释代码,便能灵光一闪,福至心灵,从而解决问题。 凌灵道:“你当一下我的小绿鸭。” 现在,她就当雨冥渊是她的倾诉对象。 但雨冥渊却将头一歪,道:“鸭?我为什么要当鸭?” 凌灵:“……”