Apfeltech. » Apple, iOS, iPhone, iPad & iPod Touch News-Blog

Autor:
  schrieb am 12 Oktober 2009 um 6:05

Dev Tutorial: Eigenes Spiel Part 3

Weiter gehts mit dem dritten Teil unserer Tutorial Serie zum Thema Spieleentwicklung auf dem iPhone. Wenn ihr Teil 1 und Teil 2 noch nicht gelesen habt, dann macht es nun. Das Spiel was wir entwickeln werden wird nicht umbedingt groß, aber man lernt trotzdem sehr viel draus und es wird auch in den App Store kommen. Somit ist es eines der ersten Programme die komplett Open Source und auch noch genau erklärt sind.

  • Wir gehen in die .h Datei und ändern die @interface Zeile:

@interface Fall_BallViewController : UIViewController <UIAccelerometerDelegate> {

  • Das brauchen wir um die Accelerometer Funktionen nutzen zu können.
  • In der viewdidload Funktion fügen wir diese Zeilen hinzu:

UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];
accel.delegate = self;
accel.updateInterval = 1.0f/120.0f;

  • Diese Zeilen starten das Accelerometer und definieren das Zeitinterval in der die Position abgefragt wird.
  • In der gameloop Funktion fügen wir diese Zeilen hinzu:

if(CGRectIntersectsRect(ball.frame, mauer1.frame)) {
if(ball.center.x -15 <= loch1.center.x – 62 || ball.center.x +15 >= loch1.center.x + 62) {
ball.center = CGPointMake(ball.center.x, position1 + 23);
}
}

if(CGRectIntersectsRect(ball.frame, mauer2.frame)) {
if(ball.center.x -15 <= loch2.center.x – 62 || ball.center.x +15 >= loch2.center.x + 62) {
ball.center = CGPointMake(ball.center.x, position2 + 23);
}
}

if(CGRectIntersectsRect(ball.frame, mauer3.frame)) {
if(ball.center.x -15 <= loch3.center.x -62 || ball.center.x +15 >= loch3.center.x + 62) {
ball.center = CGPointMake(ball.center.x, position3 + 23);
}
}

  • Wir schauen uns diese Zeilen mal genauer an. In der ersten Zeile haben wir eine Kollisionabfrage. Es fragt ab ob der Ball auf der Mauer(Die Mauer ist auch das Loch – das Loch ist nur ein Bereich der Mauer). Ist dies der Fall schauen wir ob der Ball außerhalb des Loches ist. Ist auch dies der Fall soll sich der Ball mit der Mauer nach unten bewegen. Die Mauer schiebt also den Ball nach unten.
  • Nun wollen wir auch den Ball bewegen. Dazu fügen wir eine neue Funktion hinzu:

- (void)accelerometer:(UIAccelerometer *)acel didAccelerate:(UIAcceleration *)aceler {
if (ball.center.x > 0 && ball.center.x < 320) {
ball.center = CGPointMake(ball.center.x + aceler.x*8, ball.center.y – aceler.y*8);
}
if (ball.center.x <= 0 && aceler.x > 0) {
ball.center = CGPointMake(ball.center.x + aceler.x*8, ball.center.y – aceler.y*8);
}
if (ball.center.x >= 320 && aceler.x < 0) {
ball.center = CGPointMake(ball.center.x + aceler.x*8, ball.center.y – aceler.y*8);
}
}

  • Diese Funktion soll den Ball bewegen. Dabei gehen wir von 3 verschiedenen Situationen aus. In der ersten gehen wir davon aus dass der Ball im Bildschirmbereich ist. Im zweiten Fall gehen wir davon aus, dass der Ball am Ende ist und so kontrollieren wir ob das Accelerometer einen positiven Wer gibt. Der Ball soll nur in den Bildschirm und nicht weg davon bewegt werden. Im dritten Fall komplett das selbe, nur auf der anderen Seite.

Schluss für dieses mal. Das nächste mal machen wir Scores in die App, sowie einen Game Over View mit Restart Funktion.



Autor:

WEITEREMPFEHLEN:

Diskussion / Kommentar schreiben

Anonyme Kommentare sind erlaubt. Trotzdem werden Spam oder Beleidigungen nicht gerne gesehen, daher muss Dein erster Kommentar von uns freigeschaltet werden. Hinweise und Vorschläge, die nichts mit diesem Artikel zu tun haben, nehmen wir gern via eMail entgegen.

Kontakt (Tipp-Box)