Iphone 不使用游戏引擎开发简单的游戏?

Iphone 不使用游戏引擎开发简单的游戏?,iphone,cocos2d-iphone,box2d-iphone,chipmunk,Iphone,Cocos2d Iphone,Box2d Iphone,Chipmunk,我正在尝试开发一个简单的足球游戏,包括点球,其中我必须将球从球员移动到球门柱……之前我一直使用简单的动画,使用计时器添加到球轴图像中,使其从一点移动到另一点……但我没有得到预期的结果动画不是那么流畅…所以我想使用游戏引擎…因为我是新程序员,我对游戏引擎一无所知,也找不到任何关于box2d或花栗鼠或麻雀等引擎的适当文档。我还想使用UIView动画而不是早期的动画,因为我认为它可以实现更好的动画效果,而不必在游戏引擎上抓挠我的脑袋……我不会去任何地方使用它,因此如果有人能对我的这个问题有所了解,那将

我正在尝试开发一个简单的足球游戏,包括点球,其中我必须将从球员移动到球门柱……之前我一直使用简单的动画,使用计时器添加到球轴图像中,使其从一点移动到另一点……但我没有得到预期的结果动画不是那么流畅…所以我想使用游戏引擎…因为我是新程序员,我对游戏引擎一无所知,也找不到任何关于box2d或花栗鼠或麻雀等引擎的适当文档。我还想使用UIView动画而不是早期的动画,因为我认为它可以实现更好的动画效果,而不必在游戏引擎上抓挠我的脑袋……我不会去任何地方使用它,因此如果有人能对我的这个问题有所了解,那将是非常棒的???

使用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];    
}

这对于任何简单的游戏都应该适用。

当您用
cocos2d
标记问题时,我猜您正在使用它,或者计划使用它。制作
CCSprites
的动画很容易,就像你在这个游戏中看到的那样

在您的
oneter
实现中,只需调用 [自我计划更新]

这将例行调用
更新:
,您可以在其中绘制图形

- (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;
}
这将处理球的平稳移动<代码>球头位置,
球头速度
球头附件
vvCertex2F

你甚至可能不需要处理加速度问题,只在有人击球时给球一个冲量(例如,撞击速度)


你可能还需要一些阻尼来减缓球的速度。您可以通过降低每一步的速度来实现这一点

这是box2d引擎手册:……在哪些方面不符合文档要求?如果您不使用游戏引擎,您将不得不在引擎盖下实现游戏引擎的功能。这将比使用游戏引擎更难,除非你知道你在图形、输入等方面做得很好。计时器尽了最大努力,但并不准确,当计时器启动时,你应该在变量中记录当前时间,并读取上一次的时间。使用这两次来获得增量。如果你想每0.3秒移动5帧,你可以使用5/0.3*delta来计算距离。实际上永远不要这样做,因为NSTimer虽然可能会被延迟触发(我们这里说的是几毫秒,如果你的应用程序是内存高效的),但它们会精确触发。使用重复计时器时,永远不要改变距离。