Изменение xscale влияет на обнаружение столкновений
self.player.xScale = fabs(self.player.xScale)*multiplierForDirection2;
Когда я использую поворот игрока влево, он не может обнаружить столкновения от врага2, но может обнаружить его от врага1, хотя битовые маски одинаковы для обоих. Я столкнулся с подобной проблемой и в итоге мне пришлось создать две разные функции для противника, движущегося влево и противника, движущегося вправо.
Что именно делает 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;
Похоже на наличие пустого игрового объекта, чтобы держать все вместе. К сожалению, часть вашего кода, возможно, придется изменить, чтобы приспособить новый родительский узел.