我根据苹果公司的节目指南做了一个精灵,但是当比赛开始时,精灵应该下降(根据指南),但它没有。
我是这样做的:
- (void) createContents {
self.backgroundColor = [SKColor colorWithRed:0.1 green:0.6 blue:0.8 alpha:1];
self.scaleMode = SKSceneScaleModeAspectFill;
SKSpriteNode *player = [self newPlayer];
player.name = @"player";
player.position = CGPointMake(CGRectGetMidX(self.frame), player.size.width/1.5);
[self addChild:player];
}
- (SKSpriteNode *) newPlayer {
SKSpriteNode *aPlayer = [[SKSpriteNode alloc]initWithColor:[SKColor whiteColor] size:CGSizeMake(40,40)];
aPlayer.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:aPlayer.size];
return aPlayer;
}
didMoveToView 调用 createContent 方法
为什么它不像指南中所述的苹果一样,从屏幕底部坠落
答案 0 :(得分:2)
我相信播放器确实掉到了底部屏幕,但它太快了你错过了它。因为,屏幕底部没有物理机身可以停止它,并且在屏幕上显示场景后直接创建播放器。
有两种简单的方法可以证明它:
如果您设置aPlayer.physicsBody.affectedByGravity = NO;
,您会看到aPlayer
节点浮动。
如果您将[self addChild:player];
更改为[self performSelector:@selector(addChild:) withObject:player afterDelay:4.0];
,您肯定会在4秒钟后观察aPlayer
突然出现并掉到屏幕底部
并且您应该将aPlayer
的Y位置设置为更高的值以查看更多的下降过程。在SpriteKit坐标系中,(0,0)坐标位于左下角
答案 1 :(得分:0)
使用Cmd + Shift + F查找搜索一些内容。
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
答案 2 :(得分:-1)
可能因为你没有设置场景的重力属性。
在你的SKScene:
self.physicsWorld.gravity = CGVectorMake(0,x) // replace x with your desired gravity magnitude and direction (I suggest -9.8)