- Registriert
- 13.07.15
- Beiträge
- 7
Guten Tag,
und zwar habe ich folgendes Problem. Ich spiele momentan nur ein bisschen mit den physics rum, die im SpriteKit bereitgestellt werden. Nun ist mir folgendes aufgefallen.
Ich habe einen SpriteKitNode erstellt und diesen in der Mitte des Bildschirms angezeigt. Nun wollte ich mit gravitation das ding fallen lassen. Klappt, es fällt allerdings aus dem Bild. Ich dachte die Methode self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; würde mir helfen und das Rechteck machen, tut es allerdings nur im Portrait modus. Da meine App später aber ausschließlich im Landscape Modus funktionieren soll, bräuchte ich dafür Vorschläge / Lösungsansätze, wie man das macht.
Das Männchen fällt also immer auf den Boden des Portrait Modusses, auch wenn der Controller im Landscape angezeigt ist, es fällt im Landscape also aus dem Bild!
GameScene.m
gameviewcontroller.m
Über Hilfe würde ich mich sehr freuen.
Mit freundlichen Grüßen
Robin
und zwar habe ich folgendes Problem. Ich spiele momentan nur ein bisschen mit den physics rum, die im SpriteKit bereitgestellt werden. Nun ist mir folgendes aufgefallen.
Ich habe einen SpriteKitNode erstellt und diesen in der Mitte des Bildschirms angezeigt. Nun wollte ich mit gravitation das ding fallen lassen. Klappt, es fällt allerdings aus dem Bild. Ich dachte die Methode self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; würde mir helfen und das Rechteck machen, tut es allerdings nur im Portrait modus. Da meine App später aber ausschließlich im Landscape Modus funktionieren soll, bräuchte ich dafür Vorschläge / Lösungsansätze, wie man das macht.
Das Männchen fällt also immer auf den Boden des Portrait Modusses, auch wenn der Controller im Landscape angezeigt ist, es fällt im Landscape also aus dem Bild!
GameScene.m
Code:
-(void)didMoveToView:(SKView *)view {
/* Setup your scene here */
// Hintergrund auf weiß setzen
self.backgroundColor = [SKColor whiteColor];
// add a physics body to scene, its the rectangled screen
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
// gravity
self.physicsWorld.gravity = CGVectorMake(0, -0.5);
// Get Sanchez
SKSpriteNode *sanchez = [SKSpriteNode spriteNodeWithImageNamed:@"characterR2"];
// Sanchez Positioning
sanchez.position = CGPointMake(CGRectGetMidX(self.frame),
CGRectGetMidY(self.frame));
// physics
sanchez.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sanchez.frame.size.width / 2.0]; // sanchez als ball-form
// Add Sanchez to the scene
[self addChild:sanchez];
// apply impuls
//[sanchez.physicsBody applyImpulse:CGVectorMake(20, 20)];
}
gameviewcontroller.m
Code:
//
// GameViewController.m
// SanchezBrick
//
// Created by Robin Kirsch on 13.07.15.
// Copyright (c) 2015 Robin Kirsch. All rights reserved.
//
#import "GameViewController.h"
#import "GameScene.h"
@implementation SKScene (Unarchive)
+ (instancetype)unarchiveFromFile:(NSString *)file {
/* Retrieve scene file path from the application bundle */
NSString *nodePath = [[NSBundle mainBundle] pathForResource:file ofType:@"sks"];
/* Unarchive the file to an SKScene object */
NSData *data = [NSData dataWithContentsOfFile:nodePath
options:NSDataReadingMappedIfSafe
error:nil];
NSKeyedUnarchiver *arch = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
[arch setClass:self forClassName:@"SKScene"];
SKScene *scene = [arch decodeObjectForKey:NSKeyedArchiveRootObjectKey];
[arch finishDecoding];
return scene;
}
@end
@implementation GameViewController
- (void)viewDidLoad{
[super viewDidLoad];
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = YES;
// Create and configure the scene.
GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (BOOL)prefersStatusBarHidden {
return YES;
}
@end
Über Hilfe würde ich mich sehr freuen.
Mit freundlichen Grüßen
Robin