iPhone SDK帮助小游戏

时间:2009-11-05 17:51:58

标签: iphone

对,基本上我得到的是一个应用程序,它是一个球和蝙蝠,它可以实现多少弹跳,它工作正常,但有一个问题,

当球撞到球棒的一侧时,它会将球从球场抛出,就像球的框架在球棒框架中弹跳一样,这是我在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

有人可以解决这个问题吗? 谢谢 哈利

1 个答案:

答案 0 :(得分:0)

您正在测试矩形交叉点,也许您应该进行圆周碰撞?

Distance(C1, C2) <= R1 + R2 means that the circles collided

根据你想要的游戏的实际程度,你也可以计算出你的球的运动矢量,并将其从球棒的表面法线上反射出来。