因为我太久沒编码了,我想可能通过Game Maker 来再次開始。 我尝试制作一个非常简单的使箱子推动的机制,我不是特别需要反馈或者任何东西,因为我还在学习,所以实际上我也不会介意。我只是想分享我已经取得的进展。 这是我的一个事件,当推动物体与玩家相撞时会执行的。

`//target_x & target_y 被定义在create事件中,分别代表x & y`

` if (pushed == false)` `{` `pushed = true;` `if (obj_player._ver > 0)` `{` `target_y = y + 32;` `}` `else if (obj_player._ver < 0)` `{` `target_y = y - 32;` `}` `else if (obj_player._hor < 0)` `{` `target_x = x - 32;` `}` `else if (obj_player._hor > 0)` `{` `target_x = x + 32;` `}` `}` `else if (pushed == true)` `{` `exit;` `}`

我也设定一个在玩家上方,为了阻止他们通过箱子,因为这个方法使用中出现了一个问题。 _hor & _ver 是检查玩家方向的,为了让玩家能够触发推动物体的碰撞事件,因此推动动物体被设为offset的1。

` if instance_exists(obj_pushable_parent) && obj_pushable_parent.pushed == true { if (_hor < 0) && place_meeting(x + 1, y, obj_pushable_parent) {xspd = 0;} else if (_ver < 0) && place_meeting(x, y + 1, obj_pushable_parent) {yspd = 0;} else if (_hor > 0) && place_meeting(x - 1, y, obj_pushable_parent) {xspd = 0;} else if (_ver > 0) && place_meeting(x, y - 1, obj_pushable_parent) {yspd = 0;} };`

我试玩了它,表现一般,但存在自己的问题。可能是有点低效,但是我很高兴我能够自己想出这个方法来。