【问题标题】:Andengine - Always keep the same speed of the bodyAndengine - 始终保持身体相同的速度
【发布时间】:2012-10-21 14:41:27
【问题描述】:

我正在开发一个游戏,你在屏幕中间(玩家)侧滚动,敌人从左侧或右侧连续出现。

我创建了一个敌人,以这种方式将 Linearvelocity 设置为向右(或向左): getBody.setLinearVelocity(v*this.getDireccion(), 0);

然后,当敌人与另一个敌人或玩家发生碰撞时,有时会改变方向(他向后滑动)或变得更慢或更快。我需要它始终具有相同的 LinearVelocity,并且如果这个敌人正在与玩家或其他怪物相撞,请不要停止,不要减速,不要快...相同的速度和方向。

有人可以帮我解决这个问题吗? 对不起我的英语。

【问题讨论】:

    标签: android performance andengine


    【解决方案1】:
    FixtureDef FIXDEF = PhysicsFactory.createFixtureDef(final float pDensity, final float pElasticity, final float pFriction);
    

    1) 为避免“改变方向”,将摩擦力设为 0。

    2) 要始终获得相同的 LinearVelocity,请将 Elasticity 设置为 1,然后在游戏循环中检查速度是否已更改,然后将其更改回所需的值。或者你可以使用“applyForce”,你可以看到an applyForce example here

    附:你可以使用类似.createFixtureDef(1.0f, 1.0f, 0.0f)

    我有类似的problem。我需要球弹回相同的高度。我做了什么?我记得以前的速度。当球撞到地面时(并且速度发生了变化)。我设置了之前记忆的速度(但带有相反的符号prevVel *(-1)),这是在弹跳之前。

    【讨论】:

    • 我尝试了一些方法,但是当左侧敌人与右侧敌人发生碰撞时,敌人会在屏幕上弹跳
    • 你能提供更多细节吗?
    【解决方案2】:

    如何创建 ContactListener,并使用 postSolve 回调方法来重置您的身体速度。
    碰撞后,Box2D 会产生冲力以避免灯具重叠,这就是你的身体速度发生变化的原因。 Here是一个很好的碰撞教程描述,希望对你有帮助。

    【讨论】:

    • 谢谢!我这样做。在我的 conctacListener 中,我将实体的 x 速度保存在 BeginContact(如果它们是敌人)中,在 postSolve 上我设置了之前保存的 linearVelocity。这一直有效,直到左侧的敌人与玩家发生碰撞,而玩家与右侧的敌人发生碰撞或反转。我有这个效果frikipedia.es/images/thumb/3/36/Bolas.gif/100px-Bolas.gif 但只有当玩家(他必须移动时)被困在中间时。
    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2015-11-09
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多