更改xscale会影响碰撞检测

时间:2014-04-16 15:50:49

标签: ios collision-detection xscale

self.player.xScale = fabs(self.player.xScale)*multiplierForDirection2;

当我使用向左转动玩家时,他无法检测到来自敌人2的碰撞,但是可以从敌人1中检测到它,即使BitMasks对于两者都是相同的。 我遇到了类似的问题,最终不得不为敌人左移和敌人右移创造两种不同的功能 xScale究竟在做什么来防止碰撞?

1 个答案:

答案 0 :(得分:0)

我假设这是spriteKit ....如果您创建一个SKNode作为self.player的父对象,您可以将对撞机附加到SKNode并在播放器上使用xScale = -1。像这样:

    SKNode *parent = [SKNode new];
    parent.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.player.frame.size];
    [parent addChild:self.player];
    self.player.xScale = -1;

类似于拥有一个空的游戏对象来将所有东西放在一起。不幸的是,您的某些代码可能必须更改以适应新的父节点。