我使用从Udemy课程中学到的过渡代码,但是游戏中的角色只会过渡到第一扇门,而不会穿过其他门。
我正在使用相同的对象,但是更改了对象的创建代码。我使用变量room_
,start_
。我用这些来选择不同的房间并在创建代码中开始位置。点击链接以查看视频游戏-(https://drive.google.com/open?id=1jCWIM3hYymgspW54EPbnUDrNQVZbY_4B)。
答案 0 :(得分:0)
我对项目进行了一些摆弄,我理解了您遇到的错误,即使角色在r_sworld中有相同类型的门,但它们都发生碰撞后,角色才能穿过第一扇门,他无法返回掩码,它们都有变量...我不知道为什么您的代码无法正常工作,但是我找到了解决方案!
将代码从o_player :: o_door移至o_player :: step 。
通常不建议在GMS中使用碰撞事件,您应该尝试在逐步事件中尽可能多地进行操作。您可以通过在步骤事件的末尾添加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_
中的坐标永远不要太靠近其他门。
希望这会有所帮助!