我正在努力开发一个简单的足球比赛,包括点球大战,其中我必须将球从玩家动画到球门柱......之前我曾经使用简单的动画使用计时器添加到球图像的轴,使其从1点移动到另一个...但我没有所需的结果,因为动画不是那么顺利...所以我想使用< strong>游戏引擎 ...因为我是新程序员我不知道游戏引擎,也无法找到任何关于 box2d或者花栗鼠或麻雀等引擎的文档 ..我也在考虑使用 UIView动画而不是之前的动画,因为我认为可以实现更好的动画而不会试图在游戏引擎上工作....我不会在这里,所以如果有人可以对我的这个问题有所了解,那真的很棒???
答案 0 :(得分:2)
使用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];
}
这应该适用于任何简单的游戏。
答案 1 :(得分:0)
当您使用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
。
你可能甚至不需要处理加速度,只有当有人击中它时才会对球产生冲动(即撞击速度)。
你可能还需要一些阻尼来减慢球的速度。你通过降低每一步的速度来做到这一点