You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot新手求助:如何让发射物体保持恒定速度(指向鼠标)

实现Godot物体朝鼠标恒定速度发射的方法

你当前代码的问题在于直接用鼠标与物体的位置差作为速度,位置差的向量长度会随距离变化,导致速度时快时慢。要实现恒定速度,只需要把方向向量归一化后乘以固定速度值即可。

修改后的代码如下:

func _process(_delta):
    if Input.is_action_just_released("tap"):
        var mousepos = get_viewport().get_mouse_position()
        var ballpos = self.get_position()
        # 计算从物体指向鼠标的方向向量
        var direction = mousepos - ballpos
        # 归一化向量:将长度转为1,仅保留方向信息
        if direction.length() > 0:
            direction = direction.normalized()
        # 乘以固定数值设置恒定速度,100可按需调整
        velocity = direction * 100

关键说明:

  • normalized()方法会把向量转换成长度为1的单位向量,这样不管鼠标离物体多远,方向向量的长度都是固定的
  • 最后乘以的数值(示例里的100)就是物体的恒定速度大小,数值越大,物体移动越快
  • 加direction.length() > 0的判断,是为了避免物体和鼠标位置完全重合时,归一化操作出现错误

内容的提问来源于stack exchange,提问作者©RØ©Ò

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:59:18