4

好的,这是我的第一篇文章,我对 Xcode 和 Objective C 还是很陌生。过去几周我一直在自学。无论如何,我通过制作一个小游戏来练习,您可以在其中控制直升机并收集掉落的硬币。不过,我在使用对象碰撞方法时遇到了一些麻烦。最大的问题是,成功碰撞后,直升机会自动移回其起始位置,这是我不想要的。我希望 Helicopter UIImage 留在它的新位置。我已经检查了我的代码的每一行,我没有在哪里调用以在其原始位置重新创建 Helicopter.frame。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *UserMoveTouch = [touches anyObject];
    CGPoint pos = [UserMoveTouch locationInView: self.view];
    if(pos.x<356)
    {
        [UIView beginAnimations:@"CopterMoveTo" context:NULL];
        [UIView setAnimationDuration: .5];
        [UIView setAnimationBeginsFromCurrentState:YES];

        CopterPlayer.center = [UserMoveTouch locationInView:self.view];

        [UIView setAnimationDelegate:self];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
        [UIView commitAnimations];
    }
}


-(void)CopterCollisionCheck
{
    if(CGRectIntersectsRect(Coin1.frame, CopterPlayer.frame))
    {
        SystemSoundID soundID;
        NSString *CoinSound=[[NSBundle mainBundle]
                             pathForResource:@"GetCoin" ofType:@"wav"];
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)
                                         [NSURL fileURLWithPath:CoinSound], & soundID);
        AudioServicesPlaySystemSound(soundID);
        Coin1.frame=CGRectMake(Coin1.center.x+150,15,20,23);
        if (MultiplierX==1)
        {
            ScoreValue=ScoreValue+1;
        }
        else if(MultiplierX==2)
        {
            ScoreValue=ScoreValue+2;
        }
        else if(MultiplierX==3)
        {
            ScoreValue=ScoreValue+3;
        {
    }
    ScoreValueLabel.text = [NSString stringWithFormat:@"%d",ScoreValue];


}


-(void)CopterCollisionTimer
{
    [NSTimer scheduledTimerWithTimeInterval:0.35 target:self            
    selector:@selector(CopterCollisionCheck) userInfo:nil repeats:YES];
}

如果我在粘贴代码时忘记了括号或其他东西,我很抱歉,而不是用于格式化本网站上的帖子。记住第一个 noobie 帖子!非常感谢帮助!:D

4

1 回答 1

0

pshhh 这表明我是多么的笨拙......没有意识到在游戏过程中不断更改标签文本值会使 UIImages 吓坏了。将其更改为文本字段,一切都很好:)

于 2012-11-10T08:28:11.913 回答