我目前正在开发一个动作脚本游戏,并且正在尝试设置阶段边界;然而,玩家对象是舞台对象的子对象;当引用 player.x 时,我得到它在关卡对象本身内的 x 位置。本质上,我想做的是;
if (player.x < stage.x.0) {
player.x = stage.x.0
}
有什么简单的方法可以做到这一点,或者我应该简单地确保播放器对象始终在舞台上,而不是作为子对象?
我目前正在开发一个动作脚本游戏,并且正在尝试设置阶段边界;然而,玩家对象是舞台对象的子对象;当引用 player.x 时,我得到它在关卡对象本身内的 x 位置。本质上,我想做的是;
if (player.x < stage.x.0) {
player.x = stage.x.0
}
有什么简单的方法可以做到这一点,或者我应该简单地确保播放器对象始终在舞台上,而不是作为子对象?
您可以使用localToGlobal()方法将 Point (flash.geom.Point) 从一个对象的坐标转换为舞台坐标。通过要求子对象转换玩家的位置:
var playerPosition:Point = new Point(subobject.player.x, subobject.player.y);
var playerPositionOnStage:Point = subobject.localToGlobal(playerPosition);
或者,因为一个新的点在 0 处,默认为 0,通过要求玩家对象本身将其转换为全局坐标:
var playerPositionOnStage:Point = subobject.player.localToGlobal(new Point());