我试过在XNA开发网站上关注这个例子,但是当角色跳跃时,他们无法控制/无法阻止跳跃动作直到完成。
我如何解决这个问题?这是我的跳转代码
private void Jump()
{
if (mCurrentState != FoxState.Jumping)
{
mCurrentState = FoxState.Jumping;
mStartingPosition = Position;
Direction.Y = Fox_vSpeed;
Speed = new Vector2(Fox_Speed, Fox_Speed);
}
}
答案 0 :(得分:0)
重力只是一种影响物体加速度的力。加速度会改变物体的速度,所以你可以这样做:速度 - = Vector2.UnitY * -2;然后你可以检查地面上一个物体的碰撞,一旦发生碰撞就可以将速度的Y分量归零(如果Y分量太大(绝对值),可能会对可怜的狐狸造成伤害)。
类似的东西:
Update(GameTime gt)
{
if(mCurrentState == FoxState.Jumping)
{
Speed -= Vector2.UnitY * -2;
Position += Speed;
if(Position.Y > GroundLevel)
{
Position.Y = 0;
mCurrentState = FoxState.Walking;
}
}
}
如果您需要更多信息,请使用详细信息修改您的问题。