【问题标题】:changing xscale is affecting collision detection改变 xscale 影响碰撞检测
【发布时间】:2014-04-16 15:50:48
【问题描述】:
self.player.xScale = fabs(self.player.xScale)*multiplierForDirection2;
当我使用将玩家向左转时,他无法检测到来自敌人 2 的碰撞,但可以检测到来自敌人 1 的碰撞,即使两者的位掩码相同。
我遇到了类似的问题,最终不得不为向左移动的敌人和向右移动的敌人创建两个不同的函数。
xScale 究竟在做什么来防止碰撞?
【问题讨论】:
标签:
ios
collision-detection
xscale
【解决方案1】:
我假设这是 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;
类似于有一个空的游戏对象来将所有东西放在一起。不幸的是,您的某些代码可能必须更改以适应新的父节点。