所以我正在尝试检查 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