level 4
正在做一个三消游戏,我现在遇到了一些困难,想请教高手帮忙.
2014年12月23日 15点12分
1
level 4
一. 物体交换
我想了两个办法:
1.鼠标点击之后选中,使用上下左右移动物体,
2.鼠标拖拽.
请教一下哪种方法实现比较容易?
2014年12月23日 15点12分
2
吧务
level 13
其实呢,真做起来的话,实现的难度差不多,但第二种方案会带来更好的用户体验。
个人认为可以参考宝石迷阵3的移动方式,感兴趣的话可以全做出来:
1、通过鼠标选中,再点击相邻格完成移动;
2、通过鼠标选中,直接拖动到相邻格完成移动;
3、通过鼠标选中,按方向键或WASD完成移动;
4、通过方向键和空格选中、方向或WASD完成移动;
5、通过鼠标指向,WASD完成移动。
大概操作模式多了,让玩家可以自由选择的时候,“因为操作手感不好而不喜欢这游戏”的概率会降低吧。
2014年12月24日 01点12分
5
level 9
鼠标点击-拖拽这个必须要有 其次是鼠标点击-点击 玩家主要用的就是这两种操作方式
移动操作实现都比较简单 重点是做好消除检测
用一个2d数组配合实例碰撞检测就能实现基础三消 但要做出更多功能那就比较麻烦了
2014年12月24日 10点12分
6
level 4
做了三天了,昨天已经获取到了鼠标点击的instance id
使用的方法为:
ChangeID_1 = instance_position(mouse_x,mouse_y,all)
最开始我搜索到的方法为:
ChangeID_1 = instance_position(mouse_x,mouse_y,OBJECT)
我试过不可以,改为all之后就可以了,我一直不明白这是为什么.请教一下谁能回答这个问题
我做这个的思路是:
1.生成一个变量Color, 给Color赋值一个随机数(1-6)对应1-6张图片;
2.根据对应规则,给实例切换对应图片;
2.鼠标点击获得第一个物体的ID;
3.鼠标点击获得第二个物体ID;
4.通过两个物体ID,使用 ID.Color 方法交换两个instance的Color变量的值;
5.重新绘制instance的对应图片;
2014年12月25日 14点12分
7
OBJECT这个参数是需要检测的Objects名称 你要检测哪个就写哪个 如果写all就是检测所有游戏里所有物体的实例 这么写到后面肯定得出错 另外消除游戏相对复杂 用代码块到后期会极其麻烦 最好练习直接写代码
2014年12月26日 03点12分
回复 Looloogames :多谢大神指教,我是为了获得鼠标下面的实例的ID,因为不知道实例的名称,所以只能用all了。
2014年12月26日 03点12分
回复 jkm三儿 :你好像没弄明白instance和object的关系 看一下左侧objects文件夹里你做的那个宝石——就是你给它设置代码的那个 这东西才是object 画面里那一堆宝石都是这个object的实例化产物instance 把这个object的名字写上 游戏里它的所有实例都会被检测到
2014年12月26日 08点12分
回复 Looloogames :是不是跟类和对象之间的关系一样? instance是object的一个实体,object是instance的一个抽象.
2014年12月27日 09点12分
level 14
开始布局时,就应该避免出现能消除的情况,要不是不是有点怪异?或者开局之后先遍历一遍,可以消除的就进行消除操作。
2014年12月26日 00点12分
9
level 4
游戏做出Demo了,写一下笔记:
instance_position(x,y,obj)
Returns the id of the instance of type obj at position (x,y). When multiple instances are at that position the first is returned. obj can be an object or the keyword all. If it does not exist, the special object noone is returned.
上面的意思是:返回一个位于坐标点(x,y)的实例的id值(在GameMaker中实例的id>=10000),如果没有实例,则返回一个特殊物体的实例noone的id值(我得到的是-4).
用x,y标记这个实例的位置.obj表示实例对应的物体.(也就是7楼Looloogames跟我说的那个obj).我在游戏中创建了Element物体,所以可以用instance_position(x,y,Element)得到位于(x,y)坐标的一个Element实例的id值.我把得到的id赋值给Element_Right_1.
如果不确定位置,可以使用instance_nearest找到一个距离坐标点(x,y)最近的实例id,用法和上面的instance_position一样.
instance_nearest(x,y,obj) Returns the id of the instance of type obj nearest to (x,y). obj can be an object or the keyword all.
注意:得到的id值最好赋值给一个变量,如果直接使用,容易出错.
Note that it is impossible to use a function as the lefthand side of an assignment. For example, you cannot write instance_nearest(x,y,obj).speed = 0. Instead you must write (instance_nearest(x,y,obj)).speed = 0.
然后自啊用instance_exists判断这个实例是否存在.
instance_exists(obj) Returns whether an instance of type obj exists. obj can be an object, an instance id, or the keyword all.
obj是你要查询的实例的id值,返回类型为bool类型(如果存在返回1,如果不存在,返回0)
我用的是instance_exists(Element_Right_1)
2014年12月27日 09点12分
11