我正在用Java编写一个小游戏,我遇到的一个问题是随着玩家角色的移动速度的增加而提高动画的速度。
要提高动画的速度,必须减少动画每一帧的显示时间,最大值为0.2'对于最慢的速度和0.1'为了最高的速度。
我目前的代码有效,但显然有点笨拙。不幸的是,我无法想出一个优雅的解决方案来取代它。
public float getAnimationSpeed()
{
float _absVel = Math.abs(_vel.x);
if(_absVel > 10 && _absVel <= 50)
{
return 0.1f;
}
else if(_absVel > 50 && _absVel <= 150)
{
return 0.075f;
}
else if(_absVel > 150)
{
return 0.05f;
}
else
{
return 0f;
}
}
您可能会注意到该函数也可能返回零,用于将动画显示为静止(例如,当玩家角色的速度为0时,动画不应该播放)。
答案 0 :(得分:2)
你可以更有活力,而不是推理&#34;步骤&#34; :
public float getAnimationSpeed()
{
float _absVel = Math.abs(_vel.x);
float offset = 0; //whatever you want
if(_absVel<=10){
return 0f;
}
else{
return ((1/_absVel)+offset)f;
}
}
你当然可以改变&#34; 1&#34;以及与您想要的结果匹配的另一个值的偏移量。
我希望它有所帮助!
PS /您可能还想检查结果是否超过最大值或低于最低值,我没有做过。