gm8实现消除星星中的星星自然下落
gamemaker吧
全部回复
仅看楼主
level 14
宋异人 楼主
消除星星或者叫消灭星星,消除宝石等是一款非常流行的小游戏,游戏开局会生成10*10的区域,区域中有不同颜色的星星,当玩家点击连在一起星星时,相当相连区域的星星就会被消除,而被消除的星星上方的所有星星都会向下掉落,当不存在连在一起的星星时本局就会结束。
这里不谈判断能否消除的算法,这里只谈方块消除之后,其他方块如何移动的方法。
2020年03月29日 09点03分 1
level 14
宋异人 楼主
方案一:
以前,我采用过最简单的方法,就是在每个方块的消除(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
2020年03月29日 09点03分 2
level 9
这样的效果?[疑问]
2020年03月29日 10点03分 3
我最早也是用运动模拟,达不到空白的上面同步下落。
2020年03月29日 11点03分
@宋异人 可以搞一下下面的方块先运行掉落
2020年03月31日 03点03分
level 9
创建里
ay=y;
步里
with(object5)
{
if(y<ay+60)
{
y+=6
}
}
刚我试了下可以同步下落了,,把上面的数值60改为变量就可以灵活应用了,ay也要在移动完毕后重新赋值
2020年03月29日 15点03分 4
level 9
我又测试了下,是可以用的[黑线],去调试一下吧,
2020年03月29日 16点03分 5
level 2
老哥外包吗
2020年04月04日 16点04分 6
留个联系方式。
2020年04月05日 02点04分
1