私は、風景の基本的なシーンを重力で設定し、シーンをエッジループに設定しようとしています。
シーンの物理ボディと 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() を使用して長方形を自分で手動で設定するなど、いくつかの異なるオプションを試しましたが、何も適切に動作させることができませんでした。
どんなアドバイスでも大歓迎です!!!