Articles of 游戏制造商

你能用原生GM:S命令做模板吗?

我正在寻找在GM:S上使用d3d_ *函数的模版。 我找不到如何访问模板缓冲区。 是否有可能不使用外部.dll访问模板缓冲区?

防止重叠游戏工作室的实例

我有一个游戏,其中一个敌人的多个实例在步骤过程中向玩家移动。 屏幕上最多可以显示50个实例。 问题在于,这些实例在跟随玩家的时候最终都在一个大团队中。 我想阻止他们获得超过2个像素的对方。 代码如下: if distance_to_object(player) < 160 { direction = ppoint_direction(x,y, player.x, player.x, player.y) p_potential_step(x,y, player.x, true); } 如果我在这个代码中进行了2px的距离检查,那么这个实例就开始做出生涩的旋转和旋转。 我希望实例继续跟随玩家,但不要让自己重叠。

为什么我的GameMaker步骤不能正常工作?

所以我想制作一些球员在走路的时候让他的动作减less了一些,但是由于它看起来没有做任何事情,所以我实现了一千个不同的问题。 所以我尝试了不同的方式: 1 – 我已经尝试了以下脚本的Step Event: if keyboard_check(ord('A')) { player.x = -5; } if keyboard_check(ord('D')) { player.x = -5; } if keyboard_check(ord('W')) { player.x = -5; } if keyboard_check(ord('S')) { player.x = -5; } 2 – 我已经使用相同的代码尝试了碰撞事件 3-我已经尝试了一个脚本中碰撞检测的Step事件 这些选项似乎都不起作用…你能帮我吗?

我将如何从我的播放器向我的鼠标射击子弹。

到目前为止,我创建了一个名为obj_mouse的对象。 而且我的计划是当玩家离开点击时,它会从他身上产生一个子弹,直到鼠标指向的地方。 我已经把这个概念弄清楚了,但是我正在努力工作。 额外的代码我搞乱了,试着让它工作: bullet=instance_create(x,y,obj_bullet) with (bullet) { move_towards_point(mouse_x,mouse_y,5) image_angle=direction } point_direction(obj_mouse,obj_mouse,obj_mouse,obj_mouse) image_angle=direction (在上面的代码中,我没有试图指定程序,我希望子弹朝obj_mouse方向,或者说,只是鼠标。上述代码的作品,子弹做射击,但玩家必须鼠标上的球员精灵它的工作。) 预先感谢您提供的任何建议。

如何在Game Maker中只允许一定数量的相同实例?

我正在创建一个简单的跳跃运行游戏。 由于某种原因,我的游戏有时会产生两个同一个敌人的情况。 所以你不能告诉他有两个人,直到他利用他的攻击,他在任意方向射击子弹。 所以,现在当游戏产生了其中两个,也是两倍的子弹,这使得游戏太难玩了。 我不知道是什么原因导致游戏产生两个。 它只发生很less。 我只是这样做,如果有两个同一个敌人的情况下,它摧毁其中之一。 这将解决这个问题。

更好的方法来find所有与其他精灵重叠的精灵

在这个网站上的第一个问题:-) 我不确定标题是否非常清晰,因此可以随意编辑/建议更好的标题。 我有一个游戏制造商代码的作品,但感觉像一个黑客的一点,也导致一些副作用,其他地方,所以我想知道是否有更好的办法。 我正在构建一个俄罗斯方块克隆,这个片段出现在下降瓦片父对象的Step事件中。 这个想法是,当坠落的物体与某些物体发生碰撞时,应该用“砖块”物体代替,这样我就可以独立地摧毁它们。 所以我想要做的是testing一个砖块是否会与下落的物体重叠,如果是的话就在那里创建一个砖块。 我正在使用一个砖的实例(称为trialBrick和全球创建)来做testing。 我可以尝试创建一个砖,然后摧毁它,如果它不与下落的对象重叠,但我不知道这是否有效或不。 思考? // just move the brick downward if we can by one pixel. var obstacle = instance_place(x, y + 1, all); if (obstacle != noone) { isFalling = false; // loop through each row of the object. var row; var column ; for (row = y – […]

游戏制造商实施Delta时间到Hspeed

我有一个delta时间的工作代码。 我在我的房间里设了一堵墙,在同一个位置打开了两个实例,我把一个窗口设置为10 FPS,而另一个窗口保持在60.如果我对hspvariables施加恒定的加速度,它们都会到达同时。 但是,如果轻按一下轻按,然后再次轻按移动键,则具有10 FPS的那个将向前移动比60 FPS更多的像素。 从我的理解,这是因为三角洲是在6,它是从6 *.5=3向前移动对象3像素,所以我不知道如何解决它… 以下是我的代码的工作方式: dt = delta_time/1000000; scale= 1 global.dt_steady = 60 *(dt*scale) if (keyboard_check(vk_left)) or gamepad_button_check(0,gp_padl) { if hsp>0{hsp=0} hsp-=.5 *global.dt_steady } // Horizontal repeat(abs(hsp*global.dt_steady)) { if (!place_meeting(x + sign(hsp), y, Wall)) { x += sign(hsp*global.dt_steady) } else { hsp = 0; break; } }

GMS2:如何绕过内置variables?

我一直忙于与Gamemaker Studio 2合作,我注意到它有一些内置variables。 像'x','y','速度','健康'。 这些variables已经有了一个set函数,它和我自己设置的variables重叠。 我之前正在看一个教程,为他的所有variables添加一个下划线,所以这些会在完全写出来的时候出现在顶部。虽然它起作用,但我不喜欢所有这些uinderscore的外观。 所以我为什么问自己是否可以做得更容易。 那么,有没有人知道其他方法来使自定义variables没有机会让内置variables重叠?

画一堆精灵

我在Gamemaker Studio 2中的对象的绘制事件上有一些代码,理想的情况是应该使用从堆栈中获取的精灵索引来绘制多个透明的顶点。 但是我不认为我理解这个画图函数足以知道如何做到这一点。 没有一个被称为抽象的额外精灵 var height=ds_stack_size(hardcopy); softcopy = ds_stack_create(); ds_stack_copy(softcopy,hardcopy); draw_self(); draw_sprite(outline_spr,0,x,y); for (i=0; i<height; i++) { if (ds_stack_top(softcopy)!=noone) { var pic = ds_stack_pop(softcopy); draw_sprite(sprite_sheet,pic,x,y); } } ds_stack_destroy(visuals);

我可以在没有使用Apple Developer Program的情况下编译GameMaker 2可执行文件在Mac上进行testing吗?

我有一个GameMaker 2文件,我想将它编译成一个可执行文件(macOS调用一个UNIX可执行文件),仅用于testing目的。 我不想为苹果开发者计划注册,我也不打算把它放在App Store上。 在GameMaker中,我只有输出虚拟机。 我可以在没有使用Apple Developer Program的情况下编译GameMaker 2可执行文件在Mac上进行testing吗?