Alf*_*fro 4 xcode ios sprite-kit
我在spriteKit开始了一个平台游戏,我对横向模式有点问题.当我和我的英雄一起跳跃时,我会使用
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
Run Code Online (Sandbox Code Playgroud)
而当英雄它在空中并与墙壁或任何物体相撞并错过他的速度时,我就使用了
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint positionInScene = [touch locationInNode:self];
SKSpriteNode *touchedNode = (SKSpriteNode *)[self nodeAtPoint:positionInScene];
CGPoint posicionHero = [self.world childNodeWithName:@"hero"].position;
SKSpriteNode *touchHero = (SKSpriteNode *)[self nodeAtPoint:posicionhero];
//pragma mark -hero movement in the air
if ((touchedNode != touchHero)
&&
(positionInScene.x > [self.world childNodeWithName:@"hero"].position.x))
{
[[self.world childNodeWithName:@"hero"].physicsBody applyImpulse:CGVectorMake(5, 0)];
}
if ((touchedNode != touchHero)
&&
(positionInScene.x < [self.world childNodeWithName:@"hero"].position.x))
{
[[self.world childNodeWithName:@"hero"].physicsBody applyImpulse:CGVectorMake(-5, 0)];
}
}
Run Code Online (Sandbox Code Playgroud)
保持这种速度.我一直在纵向模式测试,一切都很好,但我的游戏是横向模式,所以最后我把游戏阻挡到横向模式,现在我在横向模式下测试它,我遇到了麻烦,因为当我在跳跃中向前移动手指时,没有任何反应.而不是这个,我必须向上移动我的手指,以获得这种运动.我确定我错过了横向模式的一些基本配置.任何帮助都会被贬低
这实际上是SpriteKit游戏中的常见问题.这是因为viewDidLoad实际上在应用检查设备方向之前运行.您可以通过更换修复它viewDidLoad与viewWillLayoutSubviews将设备定向检测后运行.例如,您可以使用以下命令替换默认的SpriteKit viewDidLoad:
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
// Configure the view.
SKView * skView = (SKView *)self.view;
if (!skView.scene) {
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
}
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看以下源: UIViewController返回无效帧? http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners
| 归档时间: |
|
| 查看次数: |
1769 次 |
| 最近记录: |