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

Godot 4中如何根据手部运动计算投掷力实现RigidBody2D投掷

如何根据手部运动计算RigidBody2D的投掷力?

我需要实现投掷效果:当前松开箱子后它只会下落,想让它能被“投掷”出去,箱子是一个RigidBody2D,场景需求可参考视频(若视频失效请告知我更新)。

手部移动实现代码

func _integrate_forces(state):
var _transform = state.get_transform()
if idName == "Left":
    var mouse_position = get_global_mouse_position()
    var abovePlayer = Vector2(4,-8)
    var direction = (mouse_position - _player.global_position )
    var distance = direction.length()
    if distance > MAX_DISTANCE:
        direction = direction.normalized() * MAX_DISTANCE
    var hands_pos = _player.global_position + abovePlayer + direction
    _transform.origin = hands_pos
state.set_transform(_transform)

箱子被拾取后的处理代码

func _integrate_forces(state):
    angular_velocity = 0
    var _transform = state.get_transform()
    if(following):
        gravity_scale = 0;
        var middlePoint = get_middle_point(Game.bodyHandLeft.global_position,Game.bodyHandRight.global_position)
        _transform.origin = middlePoint
        call_deferred("lock_me")
    else:
        if(followTarget != null):
            followTarget = null;
        call_deferred("let_me_go")
    state.set_transform(_transform)

我尝试获取被拾取后箱子的linear_velocity,结果始终为0,constant_force也一直是0;查看手部的这些参数结果同样为0。不知道该如何获取手部/箱子的运动力,从而调用apply_impulse()实现投掷,恳请各位提供帮助,提前感谢!

内容的提问来源于stack exchange,提问作者Denis Galla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:30:04