好的,这是我的第一篇文章,我对 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