求各位大佬帮帮孩子吧,已经要疯了,真的学不下去了
gamemaker吧
全部回复
仅看楼主
level 2
贴吧用户_aUARKXt
楼主
求助各位大佬,我想实现让几个object之间轮换控制,代码如下,但是不知道为什么只能控制第一个object,按tab也没有反应,在最后的obj- controller的create里control_object=obj_player1;和其他的一样,真的不知道怎么改了已经要疯了,求求各位会的帮帮我
2023年10月02日 01点10分
1
level 9
Acilen-
你需要正确理解变量的含义,在物体a中写的aaa变量就默认是只属于a的变量(也即gml中的a.aaa,表示a的aaa变量),因此当你在其他实例中试图调用aaa系统就不会认识,因为aaa是a的变量,系统不认识就会重新为b物体也设置一个b的aaa变量,这俩aaa变量名字一样,但是一个属于a一个属于b,除了名字没有半毛钱关系
想实现实例间调用变量,两个方法
1.直接加上对应名称,如在b中调用a的aaa变量,在b中写“a.aaa=1”即可,但这只适用于只有一个a的情况,如果有多个a,请学习gml中id相关知识。
2.你这种情况,在第一次声明变量时为他赋予全局属性,从这一刻起这个变量就是全世界通用的了,你可以随便为他赋值或判断,方法如“global.aaa=1”,为避免不必要麻烦,之后每次调用他时都加上global为好
2023年10月02日 08点10分
2
level 8
liurengfei
你是不是要实现,类似魔兽争霸3的鼠标或键盘,选择一个单位后,进行控制。
首先是要分层,分为控制层、实例。
需要被控制的实例全部继承接口变量,UpB是否上、DownB是否下、是否左、是否右。接口变量除了方便玩家控制,也方便由AI模块输出NPC的行为。
分离键码和实现方法,实现自定义按键、NPC行为和玩家行为的复用。
声明一个变量储存当前控制的实例引用。
每步判断键码是否按下,是则调用对应的方法(参数:实例引用)。
2023年10月04日 12点10分
3
吧务
level 13
q糖豆p
0、你在obj_player1、obj_player2、obj_player3、obj_player4和obj_controller里写的变量名control_object互相是分开的。要知道变量属于的是实例(比如你房间内有两个obj_player1,它们的control_object也可以维持不同的值)。
1、要调用其他实例的变量,可以使用 object名.变量名 或者 id.变量名 的方式。具体在该object没有对应实例存在或存在多个实例时会有不同的注意要点。
2、全局变量的使用方法是 global.变量名 ,早期版本有globalvar这样声明全局变量的方法,没记错的话已废弃。注意如果使用全局变量的话,建议不要每个player的创建事件都给它赋一遍初始值,除非你不打算后期创建它们的实例。
3、有一个只读变量(object_index),合理使用的话你的这些player可以使用同一个parent来整合代码。
4、如果对于object - instance结构更熟悉一些,目前这些东西其实可以整合成同一个object,然后利用各instance的相同变量存储差异值来实现分开控制。
5、正如咱经常说的,很多时候方法并不唯一,甚至可以player什么都不做,是controller在判定键盘指令后“对当前在控制的object进行坐标变化”。
2023年10月06日 18点10分
4
level 11
MikuScarlet
把control_object从player1-4删了,将control_object更换为全局变量。
2023年10月15日 12点10分
6
MikuScarlet
想明白为什么的去看看糖豆大大的解析
2023年10月15日 12点10分
1