0

我使用从 Udemy 课程中学到的过渡代码,但我游戏中的角色只会通过第一扇门进行过渡,而不会通过其他门。

我正在使用相同的对象,但更改了对象的创建代码。我使用变量room_, start_. 我使用这些来选择不同的房间并在创建代码中开始位置。单击链接查看视频游戏 - ( https://drive.google.com/open?id=1jCWIM3hYymgspW54EPbnUDrNQVZbY_4B )。

4

1 回答 1

0

我对项目进行了一些修改,我理解您遇到的错误,角色通过第一扇门后,即使在 r_sworld 中有相同类型的门,他也无法返回,它们都有碰撞面具,他们都有变量...我不知道为什么您的代码不起作用,但我找到了解决方案!

将代码从 o_player::o_door 移动到 o_player::step
通常不建议在 GMS 中使用碰撞事件,您应该尽可能多地在 step 事件中进行操作。您可以通过在 step 事件的末尾添加以下内容来用 o_door 替换您的碰撞事件:

if (place_meeting(x, y, o_door)) {
    var door = instance_place(x, y, o_door);
    room_goto(door.room_);
    global.player_start_position = door.start_;
    persistent = true;
}

这是一个问题。如果 指定的新位置global.player_start_position使玩家出现在目标房间的其他门上,您将立即被传送回第一个房间。确保里面的坐标door.start_永远不会太靠近其他门。

希望这可以帮助!

于 2019-07-23T10:38:03.067 回答