Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Iphone 2d游戏-应用重力,反弹问题_Objective C_C_Ios4_Cocos2d Iphone - Fatal编程技术网

Objective c Iphone 2d游戏-应用重力,反弹问题

Objective c Iphone 2d游戏-应用重力,反弹问题,objective-c,c,ios4,cocos2d-iphone,Objective C,C,Ios4,Cocos2d Iphone,我是一名flash游戏开发人员目前我开始使用Cocos2D引擎为iphone编写游戏,我已经实现了碰撞检测的分离轴定理,效果非常好。所有多边形在openGl中绘制如下。 经过多次搜索,我找到了本教程,并在objective C中实现了相同的功能,现在我尝试将重力应用到这个16x16的盒子上 我遇到的问题是,在正方形静止后,它会以分数的形式上下跳动。我尝试了很多方法来修复这个问题,但是我无法控制那个微小的移动。我在flash中从来没有遇到过这样的问题,但是这里的浮动值对正方形的位置影响很大 请让我

我是一名flash游戏开发人员目前我开始使用Cocos2D引擎为iphone编写游戏,我已经实现了碰撞检测的分离轴定理,效果非常好。所有多边形在openGl中绘制如下。 经过多次搜索,我找到了本教程,并在objective C中实现了相同的功能,现在我尝试将重力应用到这个16x16的盒子上

我遇到的问题是,在正方形静止后,它会以分数的形式上下跳动。我尝试了很多方法来修复这个问题,但是我无法控制那个微小的移动。我在flash中从来没有遇到过这样的问题,但是这里的浮动值对正方形的位置影响很大

请让我知道什么是写的方式来处理这样的问题,任何参考网址将是有益的。感谢你的帮助,谢谢

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

if(square.points[0].y在使用反弹算法时,通常建议实现一个轻微的缺陷,以确保该事件不会发生。您还可以扩大被接受为“着陆”的范围,但请记住,确保随后将对象粘贴到地板上,以确保没有视觉瑕疵

我所说的不完美是指:

velocity.vy *= (-bounce + 0.01f);

例如,这会使您的对象始终停止。

使用cocos2d附带的Box2D phys engine可能会更容易…您完全正确,但实现我自己的所有功能的原因是因为我现在正在寻找工作。我认为从头开始写将有助于更新基础知识,向量数学,碰撞。@JustJeff:抱歉,我错过了,现在我已经添加了。仍然有同样的问题,现在我决定妥协反弹,所以我现在只想实现重力。我的意思是,一旦它落地,我想保持正方形在地上。现在的一个新问题是设置坐标,使它们保持在地面上,gra我不太明白你的问题。我猜你是在对四个点施加重力,当一个点触地时,你就停止它。为了保持物体的大小,你要么说物体是完全刚性的,在这种情况下,o的位置这些点将是绝对的,或者你可以在点之间实现弹簧式连接以保持形状。每个角都应该连接到另一个角。很抱歉混淆-实际上我正在努力实现非常基本的重力。我在更新着陆位置时犯了一个错误,我现在修复了反弹和重力I谢谢你抽出时间,这真的让我想起来了。
velocity.vy *= (-bounce + 0.01f);