Andengine Fixtures, Gravity, Mass - 永久弹跳球

Posted

技术标签:

【中文标题】Andengine Fixtures, Gravity, Mass - 永久弹跳球【英文标题】:Andengine Fixtures, Gravity, Mass - permanent bouncing ball 【发布时间】:2012-09-29 10:34:03 【问题描述】:

重力:(x=0, y=EARTH)

我想做永久的弹跳球。例如,我将它设置为坐标 (200, 200),在它落到地面后,弹跳并返回到与 begin (200, 200) 相同的坐标。我试着玩密度、弹性、摩擦力,我得到了一些类似的行为,但正在改变。我google了很多,发现问题是由于四舍五入的浮动。问题:引擎中哪个值正在发生变化,在该值变得超过某个增量之后我需要重置哪个值?

第二个问题:为什么如果我这样设置固定装置:固定装置(密度 = 1,弹性 = 1,摩擦 = 0)它不会反弹到相同的高度,而是随着每次反弹而反弹?我将弹性设置为 0,981f

第三个问题:一个对象的夹具如何依赖于第二个对象的夹具? 例子: 球(1f, 0.6f, 1f) 墙(1f, 0.6f, 0f)

球(1f, 0.6f, 1f) 墙(1f, 0.6f, 0.5f)

会发生什么变化?

【问题讨论】:

您真的每次都需要精确相同的坐标还是球的动能+势能大致恒定? 我需要让球回到相同的高度(+/- 15 px 可能是错误的)看这里:Example 那么这两个问题可能会有用:***.com/questions/11257197/…***.com/questions/11257462/… 如果我是你,我会给身体弹性大于 1 并监控它的速度。如果身体的速度变得太大,监视器会减慢它的速度。这将使系统保持平衡 - 身体会不断获得一点能量,多余的能量会被修剪掉。 我明白了。也许您可以在球第一次接触地面之前测量速度,然后将其设置为最大速度而不是硬编码值。或者为不同的高度创建一个值表,并找出一个合适的函数,为每个高度提供正确的值。不过,根据游戏机制,横向速度可能会发挥作用。 【参考方案1】:

hmmm,要制作一个永久的弹跳球,请将您的身体 BodyType.DynamicBody 设置为一个,然后将重力设置为 0,EARTH (9.8f) 和

scene.registerUpdateHandler(new IUpdateHandler() 


    @Override
    public void onUpdate(float pSecondsElapsed) 

            if(body.getPosition().y >=CAMERA_HEIGHT)
            
                Vector2 v=new Vector2(0, -9f); //Adjust according to the bounce required
                body.setLinearVelocity(v);
            

    
);

第二个:

密度是体积质量密度(),而重力加速度与质量无关……

弹性是物体停在某个点时的惯性,所以如果你不想进一步移动身体,只需将其设置为 0

摩擦力是抵抗物体相对运动的力的大小(如介质空气、水或类似的东西)

所以,要在两个固定点之间创建一个弹跳球,请尝试设置(密度=1,弹性=0,摩擦=0)

【讨论】:

以上是关于Andengine Fixtures, Gravity, Mass - 永久弹跳球的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android/andengine 中剪辑或屏蔽实体?

MoveByModifier 不会重置 Andengine

绘制一个循环定时器(AndEngine)

AndEngine 与 Google Play 游戏服务

AndEngine中文文档下载地址

如何在 AndEngine 中从 SD 卡加载 spritesheet