vector - pygame向量检查vector2长度== 0是否不起作用?
问题描述
所以我试图检查 pygame 中的 vector2 的长度是否为 0,如果不是这种情况,我想对其进行归一化并将其乘以一个数字。
以下是相关代码:
if direction.length() != 0:
velocity = direction.normalize()
rect.center += velocity * speed
速度和方向都是 Vector2s。
但是,此代码总是会触发并给出一个错误,即它无法对长度为 0 的向量进行归一化。
但是,当我将其稍微更改为:
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
推荐阅读
- oauth-2.0 - Prometheus 使用 oauth2 抓取会导致“未解析的变量:request.header.Authorization”
- maven - 调试缓存:45 - 无法在缓存中找到用于 log4j 使用的日志中的范围报告的模板
- opencv - Orbbec 和 opencv 统一。地板上的物体检测
- .htaccess - .htaccess 和 $_GET 问题
- python - 使用python在mysql中加载数据时出错
- sql-server - 如何在容器启动时运行命令,而不覆盖原始图像的命令?
- stream - 视频通话和互动直播的区别?
- text - 反转希伯来字符
- python - 在 python 中加载 Tensorflow Lite 模型
- forms - 表单上显示的 NetSuite 折扣项目