我希望玩家使用下面的代码在我的游戏中拾取对象,但我得到:
...
FlxG.overlap(weapons, players, onPickup)
}
private function onPickup(wep:Weapon, player:Player):Void
{
//access player function
}
我已经如下初始化了玩家和武器,并添加到组中
players= new FlxTypedGroup<Player>();
weapons= new FlxTypedGroup<Weapon>();
Weapon
扩展 FlxSprite
和 Player
扩展 FlxTypedGroup<FlxSprite>
。我使用
FlxTypedGroup
是因为我希望玩家有多个与之关联的 Sprite 。请帮忙,以便我可以访问播放器类变量!
如果我用
player:Player
替换 player:FlxSprite
没有错误,但是我无法再访问 Player
类函数。 最佳答案
我知道这可能有点晚了,但您可以尝试以下几点:
您可以尝试将 FlxSpriteGroup
用于 Player
而不是 FlxTypedGroup
。可能需要一些工作才能使其按您想要的方式工作。
此外,它给您一个错误的原因是因为 overlap
和 collide
将(默认情况下)深入您的组,直到涉及实际对象...
如何解释...如果您有一个 FlxTypedGroup<Player>
并且您的 Player
对象扩展了 FlxTypedGroup<PlayerPart>
(如果 PlayerPart
扩展了 FlxSprite
或其他内容),那么当您执行 FlxG.overlap(weapons, players, onPickup)
时,重叠不会传递 Player
对象,它将传递重叠的 PlayerPart
对象- 事实上,它会为每个与武器重叠的 onPickup
对象调用 PlayerPart
一次 - 可能是同一个 - 这个 update
。
如果您能弄清楚,您可以利用此行为来发挥自己的优势 - 让您的 Player 组包含多个 PlayerParts,但将所有这些设置为 allowCollisions = NONE
,除了一个将成为您的碰撞箱等。
你可以做很多事情,只是弄清楚细节。祝你好运!
关于haxe - 无法使用 FlxG.overlap 传入 FlxTypedGroup 类参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27479280/