2009-07-11 3 views
0

Ich habe diese IBAction, die ein Zeichen auf dem Bildschirm machen soll, aber wenn es aufgerufen wird, verschiebt es das Zeichen nur einmal, dann jeden Aufruf danach das Zeichen bewegt sich mehr und mehr nach unten. Diese Funktion sollte nur aufgerufen werden, dann würde der Charakter "hochspringen" und dann direkt vom Bildschirm fallen, da ich keine Kollision mit dem Boden gemacht habe. Warum gibt es Vorschläge? tim ist der Name meiner UIImageView, die den Chracater enthält, btw.Iphone, objective-c wie man eine Jump-Methode für einen Platformer macht

-(IBAction)Jump:(id)sender 

{ int jumpSpeed ​​= JumpSpeedLimit; CGPoint newCenter = tim.center;

if(!mainJumping){ 
    //then start jumping 
    mainJumping = TRUE; 
    jumpSpeed = JumpSpeedLimit*-1; 
    newCenter.x -= jumpSpeed; 
    tim.center = newCenter; 

} else { 
    //then continue jumping if already in the air 
    //crazy math that I won't explain 
    if(jumpSpeed < 0){ 
     jumpSpeed *= 1 - JumpSpeedLimit/75; 
     if(jumpSpeed > -JumpSpeedLimit/5){ 
      jumpSpeed *= -1; 
     } 
    } 
    if(jumpSpeed > 0 && jumpSpeed <= JumpSpeedLimit){ 
     jumpSpeed *= 1 + JumpSpeedLimit/50; 
    } 
    newCenter = tim.center; 
    newCenter.x -= jumpSpeed; 
    tim.center = newCenter; 
    /* 
    //if hits the floor, then stop jumping 

    if(tim.center.x >= 360 - tim.bounds.size.height){ 
     mainJumping = FALSE;    
     newCenter = tim.center; 
     newCenter.x = 360 - tim.bounds.size.height; 
     tim.center = newCenter; 
    }*/ 

} 

}

Antwort

1

Sie entwerfen grundsätzlich das falsch. Sie möchten, dass das Drücken der Schaltfläche "Jump" eine Art Flag setzt und dann in Ihrem Engine-Code das Flag verarbeitet.

0

Klingt wie ein Job für CoreAnimation mehr als einer für einen wiederholten Aufruf an eine IBAction. Erstellen Sie einen Animationspfad, auf dem sich Ihre Ansicht bewegen sollte, und fügen Sie eine Timing-Funktion hinzu, um den Gravitationsbeschleunigungseffekt zu erzielen. Dies entspricht etwa dem Beispiel des Animationskochbuchs: http://developer.apple.com/documentation/GraphicsImaging/Conceptual/CoreAnimation_Cookbook/Articles/Timing.html#//apple_ref/doc/uid/TP40006077-SW1

Verwandte Themen