Изменение 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;

Похоже на наличие пустого игрового объекта, чтобы держать все вместе. К сожалению, часть вашего кода, возможно, придется изменить, чтобы приспособить новый родительский узел.

Другие вопросы по тегам