Godot C#:Vector2与double相乘触发CS0019错误及PhysicsProcess问题
解决Godot C#中Vector2与double相乘的CS0019错误
核心解决方案
Godot C#里的Vector2是基于float实现的,不支持直接与double类型运算,只需把speed和delta转为float就能解决报错:
- 直接在运算语句中转换:
Velocity = direction.Normalized() * (float)speed * (float)delta; - 先计算总因子再转换(可读性更强):
float moveMultiplier = (float)(speed * delta); Velocity = direction.Normalized() * moveMultiplier;
关于delta设为float角色不动的原因
Godot 4及以上版本中,_PhysicsProcess的官方签名是public override void _PhysicsProcess(double delta),如果把参数改成float delta,这属于方法重载而非重写,引擎不会调用这个自定义的重载方法,导致移动逻辑根本没执行,角色自然无法移动。必须保持参数为double delta,再通过类型转换适配Vector2的运算要求。
内容的提问来源于stack exchange,提问作者iAmMe
相关产品推荐
相关产品推荐

