如果你开发的是一款超级玛丽风格的游戏,那是很自然的。但是,如果是一款冒险探索风格的游戏,你就需要让你的角色能够来回穿梭,反复回到某个地点。
这意味着我们不能再直接用room_next(),或者room_goto()这两个函数了。我们需要让角色能在指定房间位置里出生,例如我们从房间的右边出去的,我们希望在下个房间里的左边开始出现主角。
首先想到的实现方法是,为每个出生点位创建一个唯一的对象,传送主角。但这是错误,从编程上讲,我们只需要创建一个传送对象,然后用房间编辑器来改变里面的一些变量就能做到了。
现在只有一个房间,我们还要再设计一个房间,注意设计时,要让玩家能看到出入口的位置,第二个房间如下
现在我们来创建对象obj_warp,给它一个贴图,原点设置为正中心,属性为隐藏。
添加一个碰撞事件,对象为主角,填写如下 代码
if room_exists(target_room) { other.x=target_x; other.y=target_y; room_goto(target_room); }
在两个房间的出入口放上obj_warp,记下坐标值,双击打开房间1的obj_warp,点creation code,创建create事件,填写如下代码
target_room=Room2; target_x=64; target_y=352;
这个表示,把主角传到房间2,传送坐标为64,352。
在房间2也是这样设置,代码如下
target_room=Room1; target_x=1216; target_y=352;
游戏运行,效果如下
已知的BUG是,在传送时如果按猛冲按钮,会出错。
暂无关于此日志的评论。