bodyWithEdgeLoopFromRect不能在景观中工作
我只是试图在景观中设置一个基本场景,引力和边缘循环中的场景。bodyWithEdgeLoopFromRect不能在景观中工作
我设置场景的物理身体和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() 我自己手动设置矩形我无法获得任何正常工作。
任何意见将不胜感激!
好吧,这是一个超级Janky修复...
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(0, 200, 320, 200)];
我不知道为什么这个工程......而这显然将会对更小的屏幕尺寸有些问题...更好的修复并解释将非常感谢! 感谢:d
请参阅Smick对实际解决方案的评论 – LearnCocos2D
您将需要设置在viewWillLayoutSubviews边缘环,因为场景大小在随后才知道:
-(void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
// Configure the view.
SKView * skView = (SKView *)self.view;
if (!skView.scene) {
skView.showsFPS = YES;
skView.showsNodeCount = YES;
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[skView presentScene:scene];
}
}
你需要设置的collisionBitMask你mainCharacter等于sceneCategory(需要创建)。如果你告诉他们,你的节点只会受到影响。
检查此问题http://stackoverflow.com/questions/19353942/skscene-ipad-height-width-reversed/19354725#19354725 – DogCoffee