Iphone 2d游戏-应用重力,弹跳问题

|| 目前是一名Flash游戏开发人员,我开始使用cocos 2d引擎为iPhone编写游戏,我实现了单独的Axis定理进行碰撞检测,效果很好。所有多边形在openGl中绘制如下。 经过多次搜索后,现在我试图将重力应用于此16x16框,我发现本教程http://www.seinia.com/tutorials/Bounce/并在目标C中实现了同样的效果。 问题在于正方形停下来后,它会不断地向上/向下跳动。我做了很多尝试来解决这个问题,但我无法控制这种微小的移动。我从未在闪光灯中遇到过这样的问题,但在这里浮动值对方形位置的影响很大。 请让我知道如何处理这种问题,任何参考URL都将有所帮助。希望得到您的帮助。谢谢!
0,16        16,16 

 ------------
|            |
|            |
|            |
|            |       
 ------------

0,0          16,0
目标C代码
if (square.points[0].y <= 0.1f) {
        velocity.vy *= -bounce;
        [square restInPeace:[Vector2D createVectorWithComponentX:velocity.vx Y:8.0f]];
        // landed
        if (fabs(velocity.vy) < 0.9f) {
            velocity.vy = 0.0f;
            [square restInPeace:[Vector2D createVectorWithComponentX:velocity.vx Y:8.0f]];
            isLanded = YES;
        }   
    } 
翻译物件
-(void) translateVelocity:(Vector2D*)velocity
{   
    // The center as well as all of the vertices need to be
    // accommodated.
    center.x += velocity.vx;
    center.y += velocity.vy;

    for(int i=0; i < count; i++)
    {
        points[i].x += velocity.vx;
        points[i].y += velocity.vy;

        ////NSLog(@\"velocity %f %f\",points[i].x , points[i].y);
    }
}
    
已邀请:
        使用反弹算法时,通常建议实施一些瑕疵以确保不会发生此事件。您也可以扩大“已着陆”的范围,但请记住确保随后将对象粘贴到地板上,以确保没有视觉瑕疵。 我所说的不完美之处是:
velocity.vy *= (-bounce + 0.01f);
例如。这应该使您的对象总是停顿下来。     

要回复问题请先登录注册