繁体   English   中英

如果按下按钮,如何使我可以跌落的单向平台

[英]How to make one way platform on which i can come down if button pressed

所以,我想要什么:

  • 如果我的播放器的身体线速度y> 0,则在平台上移动。
  • 如果我的玩家的身体与平台发生碰撞,并且按下了“ DOWN”按钮,则向下移动

我试过的

switch (fixA.getFilterData().categoryBits | fixB.getFilterData().categoryBits) {
        case Game.PLATFORM_BIT | Game.PLAYER_BIT:
            if (playerBody == contactEntityA.getBody()) {
                if (playerBody.getBody().getPosition().y <
                        contactEntityB.getBody().getPosition().y + .5 || playerController.isDownPressed()) { // .5 is half height of platform body
                    contact.isEnabled = false;
                }
            } else {
                if (playerBody.getBody().getPosition().y <
                        contactEntityA.getBody().getPosition().y + .5 || playerController.isDownPressed()) { // .5 is half height of platform body
                    contact.isEnabled = false;
                }
            }
        break;
}

我的问题是:

如果身体几秒钟不动,Box2d不会建立联系。 因此,过了一段时间,就没有联系了,我也无法继续前进。

您可以尝试这样的事情:

object DisableContact: ContactListener {

    override fun beginContact(contact: Contact) {

    }

    override fun endContact(contact: Contact) {
    }

    override fun preSolve(contact: Contact, oldManifold: Manifold?) {

        val playerBody = contact.fixtureA.body!! // need to identify if fixtureA or fixtureB is the player body
        if (playerBody.linearVelocity.y < -3.5f) {
            contact.isEnabled = false
        }

    }

    override fun postSolve(contact: Contact, impulse: ContactImpulse?) {
    }

}

尝试在2D方框中的传感器,使其不会与任何物体碰撞,并且可以接受事件。 当您需要物理方面时,最好使用box2D

简单的黑客帮助了我。 我只是在每个帧上对身体施加很小的速度。

playerBody.applyLinearImpulse(0f, .000001f, .5f, .5f, true); 

我不确定这是否是最好的解决方案,如果您知道如何做得更好,请写信给我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM