如何让球向某个方向移动?

时间:2015-01-31 14:30:28

标签: c++ ios

我想制作我的球员,让球向某个方向移动,大约120度向上移动。此时球向方向移动,但球不上升。球也有4种不同的速度。

 if(CGRectIntersectsRect(BallA.frame, PlayerA1.frame)){

            Y = arc4random() %5;
            Y = 0-Y;
    }

} 

球运动

timer = [NSTimer scheduledTimerWithTimeInterval:0.006 target:self selector:@selector(BallMovement4) userInfo:nil repeats:YES];

-(void)BallMovement4{

[self Computer4Movement];
[self Collision4];

Ball4.center = CGPointMake(Ball4.center.x + X, Ball4.center.y + Y);


if (Ball4.center.x < 15) {
    X = 0 - X;
}

if (Ball4.center.x > 305) {
    X = 0 - X;
}

请帮助,

谢谢

米兰

1 个答案:

答案 0 :(得分:1)

有点不清楚你正在尝试做什么以及你的班级如何运作,但总的来说,如果你想要改变一切,一个好的方法就是使用向量。例如,如果您希望球在给定方向上每帧移动3个像素,则球将具有位置和速度矢量,如下所示:

typedef struct Ball { // could be a class if that makes sense for your use
    CGPoint position;
    CGPoint velocity;
} Ball;

您可以将它们设置为某个初始值,如下所示:

Ball ball = { { 0.0, 0.0 }, // Ball starts at the origin 
    { 1.0, 2.0 } };  // Ball starts out moving 1 pixel to the right and 2 pixels up

然后在每个游戏框架上,你将速度添加到位置,如下所示:

ball.position.x += ball.velocity.x;
ball.position.y += ball.velocity.y;

您可以更改速度,例如,当球击中墙壁时。如果你试图模拟真实的东西,你需要找到球撞到墙壁的角度并反转它。