Xscale предотвращает обнаружение столкновений
Когда я пытаюсь использовать xscale, чтобы перевернуть любой из моих узлов SKSpriteNode, они перестают обнаруживать столкновения. Я пробовал много разных способов исправить это, включая перемещение точки привязки, обертывание узла контейнера вокруг всех моих узлов и повторение физического тела. Этот третий вариант - единственный, с которым у меня был успех, но он не будет работать в большинстве ситуаций. Есть ли какой-нибудь способ исправить это, если перевернуть все художественные работы и создать двойной каждый атлас анимации?
self.player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(30, 60)];
self.player.position= CGPointMake(400, 200);
self.player.zPosition = 25;
self.player.physicsBody.dynamic = YES;
self.player.physicsBody.usesPreciseCollisionDetection = YES;
self.player.physicsBody.friction = 0;
self.player.name = @"player";
self.player.physicsBody.categoryBitMask = player;
self.player.physicsBody.contactTestBitMask = ground;
self.player.physicsBody.collisionBitMask = monsterCategory;
self.player.physicsBody.allowsRotation = false;
[self addChild:self.player];
for (UITouch *touch in touches){
CGPoint touchLocation = [touch locationInNode:self];
if (touchLocation.x>self.player.position.x &&touchLocation.y>=135) {
forward2 = YES;
multiplierForDirection2 = 1;
}else if (touchLocation.x<self.player.position.x && touchLocation.y>=135){
reverse2 = YES;
multiplierForDirection2 = -1;
}
if (mode2 ==1) {
[self walkingBear];
}else if (mode2 ==2){
jump2 = true;
[self fly];
}else if (mode2 == 3){
[self weapon];
}
}
self.player.xScale = fabs(self.player.xScale)*multiplierForDirection2;
1 ответ
К сожалению нет. Используя команду xScale = -1
разрушает физическое тело спрайта. Я пробовал разные подходы к этой проблеме, но не смог найти приемлемого решения. Единственное решение, которое у вас есть, по крайней мере сейчас, - это создание зеркальных изображений.
Чтобы перевернуть каждое изображение, я использовал приложение Preview и создал сочетание клавиш для команды Flip Horizontal. Это сделало работу намного быстрее.