pygame 向量检查向量 2 长度 == 0 是否不起作用?



所以我正在尝试检查 pygame 中的 vector2 是否具有 0 的长度,如果不是这种情况,我想将其规范化并乘以一个数字。

以下是相关代码:

if direction.length() != 0:
velocity = direction.normalize()
rect.center += velocity * speed

速度和方向都是矢量2。

但是,此代码始终触发并给出一个错误,指出它无法规范化长度为 0 的 Vector。

但是,当我将其稍微更改为:

if direction != pygame.math.Vector2(0,0):
velocity = direction.normalize()
rect.center += velocity * speed

然后它起作用了。

我在第一个示例中做错了什么吗?当我打印 Vector2.length(( 时,它给了我一个值为 0 的浮点数,但不知何故,这仍然通过了 if 条件。因此,我很困惑。

规范化向量无非是将向量的分量除以长度。计算向量的长度,如果向量不为 0,则将向量除以长度:

dir_len = direction.length()
if direction.length() != 0:
velocity = direction / dir_len

最新更新