对,基本上我得到的是一个应用程序,它是一个球和蝙蝠,它可以实现多少弹跳,它工作正常,但有一个问题,
当球撞到球棒的一侧时,它会将球从球场抛出,就像球的框架在球棒框架中弹跳一样,这是我在mainview.m中的代码
#import "MainView.h"
#define kGameStateRunning 1
@implementation MainView
@synthesize paddle, ball;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
CGPoint xLocation = CGPointMake(location.x,paddle.center.y);
paddle.center = xLocation;
}
-(IBAction) play {
pos = CGPointMake(14.0,7.0);
[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
-(void) onTimer {
ball.center = CGPointMake(ball.center.x+pos.x,ball.center.y+pos.y);
if(ball.center.x > 320 || ball.center.x < 0)
pos.x = -pos.x;
if(ball.center.y > 460 || ball.center.y < 0)
pos.y = -pos.y;
[self checkCollision];
}
-(void) checkCollision {
if(CGRectIntersectsRect(ball.frame,paddle.frame)) {
pos.y = -pos.y;
}
}
@end
有人可以解决这个问题吗? 谢谢 哈利
答案 0 :(得分:0)
您正在测试矩形交叉点,也许您应该进行圆周碰撞?
Distance(C1, C2) <= R1 + R2 means that the circles collided
根据你想要的游戏的实际程度,你也可以计算出你的球的运动矢量,并将其从球棒的表面法线上反射出来。