Я просто пытаюсь настроить базовую сцену в ландшафте, с гравитацией и с краевой петлей.
Я настроил физическое тело сцены и физическое тело спрайта mainCharacter, вот мой код:
-(id)initWithSize:(CGSize)size
{
if (self = [super initWithSize:size])
{
self.backgroundColor = [SKColor redColor];
[self setPhysicsBody:[SKPhysicsBody bodyWithEdgeLoopFromRect:[self frame]]];
}
return self;
}
-(void)setupMain
{
if (!self.mainCharacter)
{
self.mainCharacter = [[SKSpriteNode alloc] initWithImageNamed:@"spriteDefault"];
[self.mainCharacter setPosition:CGPointMake(CGRectGetMidX([self frame]), CGRectGetMidY([self frame]))];
[self addChild:self.mainCharacter];
self.mainCharacter.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.mainCharacter.frame.size];
self.mainCharacter.physicsBody.dynamic = YES;
self.mainCharacter.physicsBody.affectedByGravity = YES;
self.mainCharacter.physicsBody.mass = 0.02;
}
}
Итак, в портретном режиме все работает идеально, а вот в ландшафтном все становится совсем не так.
Я подумал, что это как-то связано
[self setPhysicsBody:[SKPhysicsBody bodyWithEdgeLoopFromRect:[self frame]]];
Как ни странно, крайняя петля по оси x для пейзажа (ось y в портретном режиме) работает нормально, но я просто проваливаюсь по оси y (x для портрета).
Я предполагаю, что кадр возвращает положение по оси Y где-то за пределами экрана в ландшафтном режиме .... то есть где-то выше или ниже экрана. ...Может быть... Не совсем уверен.
Тем не менее, я пробовал несколько разных вариантов, в том числе вручную устанавливал прямоугольник с помощью CGRectMake(). Мне не удалось заставить что-либо работать должным образом.
Любой совет будет принят с благодарностью!!!