Случайное движение для UIImage не работает

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

-(IBAction)StartPoint:(id)sender
{

    Y = arc4random() %11;
    Y = Y - 5;

    X = arc4random() %11;
    X = X - 5;

    if (Y == 0) 
    {
        Y = 1;
    }

    if (X == 0) 
    {
        X = 1;
    }



    timer = [NSTimer scheduledTimerWithTimeInterval:0.01 
                                             target:self     
                                           selector:@selector(BallMovement) 
                                           userInfo:nil 
                                            repeats:YES];
}

-(void)BallMovement{
    ball.center = CGPointMake(ball.center.x + X, ball.center.y + Y);

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

    if (ball.center.x < 305) 
    {
        X = 0 - X;
    }
}

person PabloArty    schedule 28.04.2014    source источник


Ответы (2)


Хорошо, я исправил проблему с тряской, и теперь мяч перемещается случайным образом в X, но теперь мне нужно заставить его отскакивать от границ.

-(IBAction)StartPoint:(id)sender{

Y = arc4random() %11;
Y = Y - 5;

X = arc4random() %9;
X = X - 5;

if (Y == 0) {
    Y = 1;
}

if (X == 0) {
    X = 1;
}



timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(BallMovement) userInfo:nil repeats:YES]; }

Я удаляю код из этой части:

-(void)BallMovement 
{ 
ball.center = CGPointMake(ball.center.x + X, ball.center.y + Y); 

// Я удаляю условия этой части, и движение мяча исправлено.

}
person PabloArty    schedule 29.04.2014

Попробуйте это. Это эффект прыгающего мяча, он показывает разные направления

-(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;

}


-(your method)

{

 pos = CGPointMake(14.0,7.0);

[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];

}
person iOSDeveloper    schedule 28.04.2014
comment
Но как мне объявить переменную pos? - person PabloArty; 29.04.2014
comment
хорошо, я пытался. но он дает сбой и отправляет меня на: int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } - person PabloArty; 29.04.2014