Разрабатываете простую игру без использования игровых движков? - PullRequest
3 голосов
/ 08 сентября 2010

Я пытаюсь разработать простую футбольную игру, включающую штрафные удары , в которой мне нужно анимировать мяч от игрока к воротам ... раньше я использовал простойанимации, использующие таймер для добавления к оси изображения шара, чтобы оно перемещалось из одной точки в другую ... но у меня не было желаемого результата, поскольку анимации были не такими плавными ... Так что я думал об использовании Игровой движок ... Так как я Новый программист , я понятия не имею о игровом движке, и я не могу найти какую-либо документацию, касающуюся таких движков, как box2d или бурундуков или воробья ..i также думал об использовании анимации UIView вместо более ранних анимаций, так как я думаю, что можно добиться гораздо лучшей анимации без царапин на голове, пытаясь работать на игровом движке ....так что было бы здорово, если бы кто-то смог пролить свет на мою проблему ???

Ответы [ 2 ]

2 голосов
/ 30 ноября 2010

Используйте анимацию UIView, как в:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3]; // or whatever time
object.center=CGPointMake(object.center.x+2, object.center.y+4);
// or whatever
[UIView commitAnimations];

Вам также следует использовать NSTimer с тем же интервалом, чтобы вы могли плавно вызывать анимации.

NSTimer *timer=[NSTimer scheduledTimerWithTimeInterval:0.3 target: self 
selector:@selector(animation) userInfo: nil repeats: YES];

Затем реализовать метод:

- (void)animation {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3]; // or whatever time
    object.center=CGPointMake(object.center.x+5, object.center.y+7);
    // or whatever
    [UIView commitAnimations];    
}

Это должно подойти для ЛЮБОЙ простой игры.

0 голосов
/ 19 марта 2013

Когда вы пометили вопрос cocos2d, я полагаю, вы используете его или планируете.Анимация CCSprites проста, как вы можете видеть, например, в этой игре https://github.com/haqu/tweejump.

В вашей реализации onEnter просто вызовите [self scheduleUpdate]

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

- (void)update:(ccTime)dt {
    ball_pos.x += ball_velocity.x * dt;
    ball_pos.y += ball_velocity.y * dt;
    ball_velocity.x += ball_acc.x * dt;
    ball_velocity.y += ball_acc.y * dt;

    //game logic goes here (collision, goal, ...)

    ball.position = ball_position;
}

Это будет обрабатывать плавное движение мяча.ball_pos, ball_velocity и ball_acc, являющиеся vvCertex2F.

Вы, вероятно, даже не должны иметь дело с ускорением, а только отдаете импульс мячу, когда кто-то ударил по нему (т.е.скорость).

Вы, вероятно, также хотите немного затухания, чтобы замедлить шар.Вы делаете это, уменьшая скорость на каждом шаге

...