Godot 3.2.1炮塔场景浮点数比较报错:bool与float操作数不兼容
解决Godot中旋转差值判断的运算符错误问题
我一眼就看出问题所在啦——GDScript并不支持像Python那样的链式比较语法!你写的target_dir - 0.1 < rotation < target_dir + 0.1会被Godot拆成两步计算:
- 先执行
target_dir - 0.1 < rotation,得到一个布尔值(true或false) - 接着用这个布尔值和
target_dir + 0.1做<比较,这就触发了"无效操作数bool和float"的错误——毕竟布尔值和浮点数根本没法直接比大小
正确的两种写法:
方法1:拆分条件用逻辑与连接
把链式比较拆成两个独立判断,用&&确保两个条件同时成立:
if rotation > target_dir - 0.1 && rotation < target_dir + 0.1: print("bang!!!") if can_shoot: shoot()
方法2:用绝对值判断差值范围
这种写法更直观,也不容易出错,适合判断数值是否在误差范围内的场景:
if abs(rotation - target_dir) <= 0.1: print("bang!!!") if can_shoot: shoot()
小补充:因为Godot的rotation是弧度制,如果你是用角度计算的target_dir,记得先转成弧度再对比哦~从你的代码来看应该已经处理好了,这里只是提个醒!
内容的提问来源于stack exchange,提问作者Andrey Kachow
相关产品推荐
相关产品推荐

