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 - 永久弹跳球的主要内容,如果未能解决你的问题,请参考以下文章