FlxG.collide 当 x>648 时不工作
FlxG.collide not working when x>648
所以我尝试使用 HaxeFlixel 创建平台游戏,但我 运行 遇到了一个问题:在 FlxSprite 对象的 x
值超过 648 后,FlxG.collide
似乎没有工作。 Here 是问题的动图。如您所见,当玩家的 x
< 648 时它工作正常,但当它变得更大时 FlxG.collision
停止工作。
关卡由扩展 FlxSprite
的 class Wall
的对象组成,唯一的区别是它的构造函数加载墙图形并设置其 immovable
属性 到 true
。 FlxG.collide
被调用,第一个参数是 player
,第二个参数是 FlxGroup
(包含墙)。我不确定这是否重要,但 FlxState
的 super.update
在 FlxG.collide
.
之前被调用
好的,所以我查看了 HaxeFlixel 源代码(特别是 FlxG.overlap
私有函数(第 363 行)),我发现它只检查 worldBounds
FlxRect
。在我知道之后,我所要做的就是设置那个矩形的边界,这可以用 FlxG.worldBounds.set(?X:Float = 0, ?Y:Float = 0, ?Width:Float = 0, ?Height:Float = 0)
.
来完成
所以我尝试使用 HaxeFlixel 创建平台游戏,但我 运行 遇到了一个问题:在 FlxSprite 对象的 x
值超过 648 后,FlxG.collide
似乎没有工作。 Here 是问题的动图。如您所见,当玩家的 x
< 648 时它工作正常,但当它变得更大时 FlxG.collision
停止工作。
关卡由扩展 FlxSprite
的 class Wall
的对象组成,唯一的区别是它的构造函数加载墙图形并设置其 immovable
属性 到 true
。 FlxG.collide
被调用,第一个参数是 player
,第二个参数是 FlxGroup
(包含墙)。我不确定这是否重要,但 FlxState
的 super.update
在 FlxG.collide
.
好的,所以我查看了 HaxeFlixel 源代码(特别是 FlxG.overlap
私有函数(第 363 行)),我发现它只检查 worldBounds
FlxRect
。在我知道之后,我所要做的就是设置那个矩形的边界,这可以用 FlxG.worldBounds.set(?X:Float = 0, ?Y:Float = 0, ?Width:Float = 0, ?Height:Float = 0)
.