2010-12-19 18 views
0

Ich habe gerade angefangen, mit xCode herumzuspielen und versuche mir eine grundlegende Einführung zu geben, indem ich einige vorgefertigte Projekte anpasse.Gibt es eine Möglichkeit, bestimmte UIImageView-Eigenschaften zu erhalten?

Derzeit gibt es ein Projekt, das ich an, dass arbeite hat eine Kugel auf dem Bildschirm nur abprallen und es gibt eine gameLoop, dass das Setup mit der folgenden ist:

Dieser Teil in der .m definiert:

Was ich gerne wissen würde, ist im Gegensatz zu meinen UIImageView * Ball nur abprallen von den Wänden, wenn es die Mitte erreicht, gibt es eine Möglichkeit, es so zu machen, dass es einmal den Rand des Balles dann trifft es springt ab.

Erstplakat hier, ich hoffe, ich war beschreibend genug.

EDIT: Ich möchte auch versuchen, dies zu tun, so dass ich den Radius der UIImageView ändern sollte, ohne Konstanten anpassen zu müssen. Hoffentlich ist das möglich, nur um herauszufinden, aus reiner Neugier. Danke nochmal Jungs!

Antwort

0

Die einfache Antwort ist ein für den Radius der Kugel versetzt sind (in Pixeln), etwa so:

- (void)gameLoop { 
    ball.center = CGPointMake(ball.center.x + ballVelocity.x, ball.center.y + ballVelocity.y); 
    int radius = 10; // radius in pixels 
    if (gameState = kGameStateRunning) { 
     if(ball.center.x + radius > self.view.bounds.size.width || ball.center.x - radius < 0) { 
      ballVelocity.x = -ballVelocity.x; 
     } 
     if(ball.center.y + radius > self.view.bounds.size.height || ball.center.y - radius < 0) { 
      ballVelocity.y = -ballVelocity.y; 
     } 
    } 
    ... 

Es gibt viele Tutorials auf Kollisionen und erweiterte Physik auf den Seiten wie: NeHe Productions

Hoffe das hilft ein bisschen.

EDIT: Als Antwort auf deine Bearbeitung über dynamische Radiusgröße, versuchen Sie so etwas wie (nicht getestet):

UIImageView *ball; 
CGFloat radius = ball.frame.size.width; // alternatively ball.frame.size.height 
Verwandte Themen