魔塔吧 关注:65,591贴子:2,167,144
  • 12回复贴,共1

我最近在练习时消:如何使用函数判定来达到逼真的时间消除

只看楼主收藏回复

明天就是周末,正想着整点什么活,突然想到了一个有趣的点子
如图中地形,我需要让迪亚波罗在使用能力后随机改变青蛙的位置,以此来达到意义上逼真的时间消除。

那么我就需要建立一个函数,判断青蛙的下一个位置是否合理,也就是不能卡在墙里或是飞到外面去。
最左上的位置坐标是(6,1)而最右下的坐标是(18,13),那么就已经确定了(x,y)的第一个取值范围。
再通过观察发现,x的取值范围其实是根据y的变化而变化的,而规律可以总结成如下几点:
y为单数时,也就是单数行,x取值存在间隔,y为双数时,x取值不存在间隔
y>3时,y每增加2,x的取值范围就会缩小2格,同时x可取间隔的奇偶性会发生改变
那么我们就需要一个检测整数单双的函数,这个就很简单

再加上之前的条件,最后得出的总的函数就如下图,(zi指的是左右下面的虚空长度)

再稍微配合一些其他的脚本,最后我们得到的效果就是这样...


IP属地:上海1楼2021-03-26 14:00回复
    老样子任何问题都可以在楼下提出
    相信很多人会有疑问,为什么不直接遍历所有事件来确定位置上是不是墙,
    而为什么y一定要分成=1,=2,和>=3才行,
    这就关系到游戏运行流畅度的问题,如果我说我一张地图里最起码有150多个事件,
    你一个个遍历的话是不是就会增加程序的工作量造成游戏运行卡顿,而且通行元件不是只靠事件来区别的。
    而因为当y=1和y=2时x的取值范围相对较大,遇到的几率占了23%以上,
    把它们归在一个相对简单的区间里,这样就少运行了几次下面区间里检测单双的函数,
    虽然并没什么卵用,但这也是对程序运行能省就省的执着精神
    当然这还不是因为某些脚本的延迟太高了,几百个事件就卡了,要不然也懒得去考虑那么多
    如此方法不只适用于青蛙,我还可以让所有移动的怪物都用这个方法达到逼真的时间消除效果,
    但是没有必要,因为工作量会变大,程序也有可能会变卡

    以上内容仅仅是为了让吧友们在造塔时拓宽思路,希望小青蛙和老板会玩得非常愉快,
    (真是闲着没事干!)


    IP属地:上海2楼2021-03-26 14:11
    收起回复


      IP属地:广西来自Android客户端3楼2021-03-26 16:02
      回复
        🐸?


        IP属地:四川来自Android客户端4楼2021-03-26 20:21
        回复
          谔谔


          IP属地:陕西来自Android客户端6楼2021-03-26 21:58
          回复
            越来越期待了


            IP属地:山东来自iPhone客户端7楼2021-03-27 18:45
            收起回复
              所以,运气衰的话就可能永远无法达到过关的真实么?太逼真啦。


              IP属地:安徽9楼2021-03-27 21:34
              收起回复
                ysfrog最后给变量赋值是不是冗余了,毕竟xi和yi都没有变化过
                根据我个人粗浅的理解来看,RGSS系列效率门槛在描绘而不是逻辑运算
                避免遍历大可不必呀,不过实际上更有效率点的做法应该是维护一个表,
                在进入地图时生成允许青蛙出现的坐标,随机的时候直接在里面取就行了
                这样可以不仅仅适用于特定地图了


                IP属地:湖北10楼2021-03-28 15:53
                收起回复