2012-08-27 71 views
0

下面的代碼只是從屏幕頂部創建小方塊並移動到底部。我還有一個UIImageView(播放器),它由x軸上的加速度計控制。目標不是觸及動畫對象。像一個簡單的比賽遊戲。雖然我沒有錯誤,但我無法檢測到碰撞。我在代碼中找不到錯誤。可能是什麼問題?iphone開發:碰撞檢測不適用於動畫

-(void)printOut:(NSTimer*)timer1; 
{ 


    for (int i = 0; i < 100; i++) { 

     p = arc4random_uniform(320)%4+1; 

     CGRect startFrame = CGRectMake(p*50, -50, 50, 50); 
     CGRect endFrame = CGRectMake(p*50, CGRectGetHeight(self.view.bounds) + 50, 
             50, 
             50); 

     animatedView = [[UIView alloc] initWithFrame:startFrame]; 
     animatedView.backgroundColor = [UIColor redColor]; 

     [self.view addSubview:animatedView]; 

     [UIView animateWithDuration:2.f 
           delay:i * 0.5f 
          options:UIViewAnimationCurveLinear 
         animations:^{animatedView.frame = endFrame;} 
         completion:^(BOOL finished) {[animatedView removeFromSuperview];}]; 


     CGRect movingFrame = [[animatedView.layer presentationLayer] frame]; 

     if(CGRectIntersectsRect(player.frame, movingFrame)){ 
      [timer invalidate]; 
      NSLog(@"asdad"); 

      UIAlertView *alert =[[UIAlertView alloc] initWithTitle:@"You Lost" message:[NSString stringWithFormat:@"You were hit!"] delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil]; 
      [alert show]; 
     } 

    } 

    [timer1 invalidate]; 

} 
+0

我知道你正在尋找一個特定的答案(我猜你很快就會有一個答案)。不過,我建議你已經使用 – Sindico

+0

@Silli對不起,我不明白你的意思? – death7eater

+0

對不起,我沒想到我發佈了它:)無論如何,我想建議你使用已經存在的2d遊戲開發框架,如cocos2d。 www.cocos2d-iphone.org/提供物理引擎(即box2D或花栗鼠物理學),其中已經實施和測試了碰撞檢測(用於任何類型的2D形狀)! – Sindico

回答

1

您無法檢測到碰撞,因爲您的動畫只有系統知道的幀值纔是開始幀和結束幀。因此,除非您嘗試檢測碰撞的對象與第一個對象的開始或結束幀,否則您需要找到一種不同的方式來檢測它。 UIView動畫是爲美學而非遊戲邏輯設計的。

+0

我也在那樣想,但後來我知道這是錯誤的。 檢查此:http://stackoverflow.com/a/12141217/1587184 – death7eater