
豆包,我按住2个方向键,godot打印出来的变量是(0.7,0.7),不是说用了Normalized()函数,只能是整数吗?
cs
// 键盘输入
Vector2 inputDir = Input.GetVector("ui_left", "ui_right", "ui_up", "ui_down");
inputDir = inputDir.Normalized();
GD.Print($"Input: {inputDir}"); // 输出输入向量,调试用
核心答案:
Normalized () 不会把数字变成整数!它只会把向量长度变成 1,但里面的数字依然是小数。
为什么斜着走是 (0.7, 0.7)?
你同时按 → 和 ↓:
原始输入向量是 (1, 1)
这个向量的长度是 1.414
Normalized() 会把它缩放到长度 = 1
所以变成 (0.707..., 0.707...)
这是正常、正确、标准的结果!
那什么时候才会是整数?
只有 4 个正方向 才会是整数:
上:(0, -1)
下:(0, 1)
左:(-1, 0)
右:(1, 0)
8 个斜方向永远是小数!
简单总结一句
Normalized () = 让向量长度变成 1
不是让数字变成整数!