gamemaker吧 关注:13,582贴子:94,181
  • 8回复贴,共1

gm8实现消除星星中的星星自然下落

只看楼主收藏回复

消除星星或者叫消灭星星,消除宝石等是一款非常流行的小游戏,游戏开局会生成10*10的区域,区域中有不同颜色的星星,当玩家点击连在一起星星时,相当相连区域的星星就会被消除,而被消除的星星上方的所有星星都会向下掉落,当不存在连在一起的星星时本局就会结束。
这里不谈判断能否消除的算法,这里只谈方块消除之后,其他方块如何移动的方法。


IP属地:河南1楼2020-03-29 17:00回复
    方案一:
    以前,我采用过最简单的方法,就是在每个方块的消除(instance destroy)事件中,执行一个动作:判断其上方是否存在方块,如果存在,则所有其上方的方块均向下位移一个方块高度单位:其伪代码如下:
    for(i=y-64;i>=32;i-=64) //从当前位置的上边开始向上遍历
    {
    temp=instance_position(x,i,obj_ceil); //获取指定位置的方块
    with(temp) //使用with结构
    {
    y+=64; //纵坐标增加一个方块高度单位
    }
    }
    这样也能实现下落效果,但方块下落过程都是瞬移,比较突兀。那么如果对上面的代码做一下修改能不能实现呢?
    完整版的我上传百度文库了,地址在这里:https冒号双斜杠wenku点baidu点com/view/f0147b40f66527d3240c844769eae009591ba27f


    IP属地:河南2楼2020-03-29 17:02
    回复

      这样的效果?


      IP属地:贵州3楼2020-03-29 18:22
      收起回复
        创建里
        ay=y;
        步里
        with(object5)
        {
        if(y<ay+60)
        {
        y+=6
        }
        }
        刚我试了下可以同步下落了,,把上面的数值60改为变量就可以灵活应用了,ay也要在移动完毕后重新赋值


        IP属地:贵州4楼2020-03-29 23:45
        回复

          我又测试了下,是可以用的,去调试一下吧,


          IP属地:贵州5楼2020-03-30 00:50
          回复
            老哥外包吗


            IP属地:浙江来自iPhone客户端6楼2020-04-05 00:09
            收起回复