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 请求将评论转换为答案。
如果在游戏中,演员要撞到平台就在跳跃。我需要设置什么 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 请求将评论转换为答案。