物体速度增减的逻辑

//  用 nowSpeed + delspeed 和 speedMax、speedMin 进行比对,判断可以加/减多少速度
if (delspeed + nowSpeed > speedMax)  //加速道具逻辑
    delspeed = speedMax - nowSpeed;

// 减速道具逻辑
else if (delspeed + nowSpeed < speedMin)  //del+now < min  del = min -now  //-10+8 < 6  //del = 6-8 =-2  
    delspeed =  speedMin - nowSpeed;

这段代码是用来处理一个物体速度增减的逻辑,具体是当使用加速或减速道具时如何调整物体的速度。

nowSpeed:物体当前的速度。
delspeed:表示速度变化的量,可能是加速或减速的值。
speedMax:物体速度的上限。
speedMin:物体速度的下限。

代码的逻辑:

  1. if (delspeed + nowSpeed > speedMax): 这一行检查如果加上delspeed(可能是加速值)后,物体的速度是否超过了speedMax。
    如果条件为真(即加速后速度超过上限),则执行delspeed = speedMax - nowSpeed;。这行代码将delspeed调整为使物体速度恰好达到speedMax的值。
  2. else if (delspeed + nowSpeed < speedMin): 如果第一个条件不满足(即加速后速度没有超过上限),则检查如果加上delspeed(这次可能是减速值)后,物体的速度是否低于speedMin
    如果条件为真(即减速后速度低于下限),则执行delspeed = speedMin - nowSpeed;。这行代码将delspeed调整为使物体速度恰好达到speedMin的值。

如果上述两个条件都不满足,delspeed将保持不变,意味着物体的速度在加/减delspeed后既不会超过speedMax也不会低于speedMin

总结:这段代码根据物体的当前速度nowSpeed和速度变化量delspeed来调整delspeed的值,以确保物体的速度在加速或减速后不会超出设定的速度范围(speedMaxspeedMin)。


delspeed = speedMin - nowSpeed; 而不是 delspeed = nowSpeed - speedMin; 的原因与速度增减的逻辑和变量的含义有关。

在代码中,delspeed 变量代表的是需要应用到当前速度 nowSpeed 上的变化量。这个变化量可以是正值(表示加速)或负值(表示减速)。

当物体需要减速到 speedMin 以下时,我们需要计算一个负数的 delspeed,因为我们需要从当前速度中减去一个值来使速度降低。如果 nowSpeed 大于 speedMin,那么 nowSpeed - speedMin 将是一个正值,这实际上表示的是当前速度比最小速度高出的部分,但我们需要的是一个减速的量,即需要从 nowSpeed 中减去的量,所以应该是 speedMin - nowSpeed

举个例子,假设 nowSpeed 是 10,speedMin 是 5。如果我们想要减速到 speedMin,我们需要从 nowSpeed 中减去 5(即 10 - 5),所以 delspeed 应该是一个负值,即 -5。用 speedMin - nowSpeed 计算就会得到 -5,这是正确的减速量。而 nowSpeed - speedMin` 会得到 5,这实际上表示的是当前速度比最小速度高出的量,而不是需要减去的量。

因此,为了正确计算减速的量,我们需要使用 delspeed = speedMin - nowSpeed; 而不是 delspeed = nowSpeed - speedMin;
这样,当 nowSpeed 大于 speedMin 时,delspeed 会是一个负数,表示需要减速;当 nowSpeed 小于或等于 speedMin 时,由于不需要进一步减速,delspeed 的值可能需要根据具体逻辑来确定(例如,可以设置为 0 或保持不变)。


如果 speedMin 被直接设置为 startSpeed,并且使用了 delspeed = nowSpeed - speedMin; 来计算减速的量,那么这通常意味着你期望物体减速到其初始速度 startSpeed(即 speedMin)。

这里有几个可能的解释为什么这个逻辑在当时是可行的:

减速逻辑简化:如果 speedMin 就是 startSpeed,那么减速逻辑可能被简化为只需要将速度降低到初始速度。在这种情况下,nowSpeed - speedMin 将会给出一个正值,表示当前速度比初始速度高出的部分,这正好是你想要从当前速度中减去的量。

不会低于初始速度:由于 speedMinstartSpeed,你实际上是在确保物体的速度不会低于其初始速度。因此,delspeed 的计算结果是确保速度从当前值减少到 startSpeed

特定情境下的适用性:这种逻辑可能只适用于特定的游戏或应用场景,其中物体被设计为不会低于其初始速度。


如果 speedMin 的定义发生了变化,不再直接等于 startSpeed,那么之前的逻辑可能就不再适用。

在更一般的情况下,如果想让物体减速到一个固定的最小速度(而不是其初始速度),那么使用 delspeed = speedMin - nowSpeed; 会更加正确和通用。

举个例子,假设 startSpeed 是 30,而 speedMin 现在是 20(不再是 startSpeed)。如果 nowSpeed 是 40,那么你应该将速度减少到 20,而不是 30。
在这种情况下,nowSpeed - speedMin 会给出 20(表示当前速度比最小速度高出的量),而 speedMin - nowSpeed 会给出 -20(表示需要从当前速度中减去的量,以到达 speedMin)。
显然,在减速的情境中,需要一个负数来表示减速的量,所以 speedMin - nowSpeed 是正确的计算方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值