2015-01-31 5 views
0

Я хочу сделать свой игрок, заставить мяч двигаться в определенном направлении, примерно на 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

В направлении относительно чего? Покажите код, который знает направление. – Wain

ответ

1

Это немного неясно, что вы пытаетесь сделать, и как работают ваши классы , но в целом, если вы хотите перемещать вещи, один хороший способ сделать это - использовать вектор s. Например, если вы хотите, чтобы шар, чтобы переместить 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; 

вы можете изменить скорость, например, когда попадает мяч стена. Если вы пытаетесь имитировать что-то реальное, вам нужно будет найти угол, по которому мяч попадает в стену, и наоборот.

+0

Спасибо за ответ, но у меня есть изображение за мячом, ваши ответы все еще работают, если у вас есть изображение за мячом –

+0

Да, это так. Это делает его несколько более сложным для обнаружения столкновения, потому что вы должны учитывать форму шара. Но с точки зрения движения это одно и то же. – user1118321

Смежные вопросы