2D 游戏物理:击中平台演员不会停止

2D Game Physics: Hitting a platform actor won't stop

如果在游戏中,演员要撞到平台就在跳跃。我需要设置什么 velocity/position/gravity 才能让他停在平台上?关于游戏物理的任何指示都会很棒。我觉得是这样的?

Vector2 position ?   ;
Vector2 gravity ?   ;

final int Jump velocity = 11;
Vector2 Gravity(0, -12); 

public void hitPlatform () {
            velocity.y = ?
            state = IDLE;
            stateTime = 0;
        }

这是我在 hitPlatform() 中尝试使用 velocity.y = 0; 的方式,速度增加了重力,位置增加了更新方法中的速度,但他只是从平台上掉下来。

就像apnorton在评论中说的,"set your acceleration to 0 as well as your velocity" 当用户在平台上时,确保速度不会改变,或者你可以让平台成为固体,任何在顶部接触它的东西都会取消它的运动并将它的速度设置为 0。

基本上,就是不要让用户通过平台。

在你说 "and velocity adds gravity and position adds velocity in the update method but he just falls through the platform" 的地方,你可以创建一个名为 isOnGround()isOnPlatform() 的方法,并取消更新方法中的重力和速度。

当您撞上平台时,您希望将加速度和速度设置为 0。否则,你会暂时冻结并直接掉下去。

根据 OP 请求将评论转换为答案。