我一直在互联网上寻找帮助,以将角色的速度设置为最大-基本上,将角色的水平速度设置为上限。到目前为止,我发现的最好的东西是:
rb.velocity = new Vector2(Mathf.Clamp(rb.velocity.x, -maxSpeed, maxSpeed), rb.velocity.y);
但是,主要问题是,这会阻止角色的实际速度超过设置为maxSpeed的任何值(假设为4),这意味着,例如,如果它被移动的物体击中,它将推动它这样它的水平速度将超过4,每当完成运动计算后,它就会重置为4。我要寻找的是可以阻止角色自己超过4加速的东西,但仍然允许它移动外力。
答案 0 :(得分:0)
我的想法是仅限制由于用户输入而尚未主动设置velocity
的位置(如果尚不高)(由于外力作用)。
类似
if(Mathf.Abs(rb.velocity.x) < maxSpeed)
{
// calculate your new velocity according to user input
float newVelX = XYZ;
// than clamp it
newVelX = Mathf.Clamp(newVelX, -maxSpeed, maxSpeed);
// and finally asign the new vel
rb.velocity = new Vector2(newVelX, rb.velocity.y);
}