全局参数:
private bool _isJumping;
private bool _jumpKeyDown;
private float _jumpHeight = 100f;
private TimeSpan _jumpTimeSpan = TimeSpan.FromMilliseconds(500);
private double _jumpStartTime;
private float _jumpStartPosition;
|
Update中的代码:
_jumpKeyDown = Keyboard.GetState().IsKeyDown(Keys.Space); squarePosition.Y = DoJump(squarePosition.Y, gameTime);
|
高度算法函数:
private float DoJump(float velocityY, GameTime gameTime)
{ if (_jumpKeyDown && !_isJumping)
{
_isJumping = true;
_jumpStartTime = gameTime.TotalGameTime.TotalMilliseconds;
_jumpStartPosition = velocityY;
}
if (_isJumping)
{
var jumpTime = gameTime.TotalGameTime.TotalMilliseconds - _jumpStartTime;
var topTime = _jumpTimeSpan.TotalMilliseconds / 2;
if (jumpTime < _jumpTimeSpan.TotalMilliseconds)
{
if (jumpTime > topTime)
{
velocityY =
_jumpStartPosition-_jumpHeight - Convert(-(jumpTime - topTime) * _jumpHeight / (_jumpTimeSpan.TotalMilliseconds - topTime));
}
else
{
velocityY =_jumpStartPosition+ Convert(-( jumpTime)*_jumpHeight/topTime);
}
}
else
{
_isJumping = false;
velocityY = _jumpStartPosition;
}
}
return velocityY;
} |
本文转自today4king博客园博客,原文链接:http://www.cnblogs.com/jinzhao/archive/2012/06/03/2533297.html,如需转载请自行联系原作者
本文详细介绍了如何使用C#在游戏开发中实现角色的跳跃效果,包括全局参数设置、Update方法中的状态检测以及核心的高度算法函数DoJump。通过数学公式控制角色上升下降的速度和高度,实现了平滑的跳跃体验。
4893

被折叠的 条评论
为什么被折叠?



