CS0019 无法将 Vector2 与 double 相乘

iAm*_*mMe 2 c# godot

我正在使用 C# 和 Godot。

我已经能够使用多个 Vector2 和浮动,但是当 delta 是浮动时,角色的移动不起作用。

方向是 Vector2,速度和增量都是双倍的。

这是我的代码:

Velocity = direction.Normalized() * speed * delta;
Run Code Online (Sandbox Code Playgroud)

该代码行导致 CS0019 错误,指出运算符“*”不能应用于“Vector2”和“double”类型的操作数。

我无法将速度和增量更改为浮点数,因为如果增量是浮点数,则_PhysicsProcess无法覆盖并且不会移动角色:

public override void _PhysicsProcess(double delta)
Run Code Online (Sandbox Code Playgroud)

Gur*_*ron 5

文档未列出接受 的Vector2乘法运算符double。尝试使用floats (通过强制转换):

Velocity = direction.Normalized() * (float)(speed * delta);
Run Code Online (Sandbox Code Playgroud)

或者只是从一开始就将speedand声明为浮动。delta

请注意,他的转换不是无损的(即并非每个双精度型都可以正确转换为浮点型)。

也可以看看:

  • 我可能会在乘法之后转换为“float”,以免不必要地损失精度:“(float)(speed * delta)”。 (3认同)