1

我正在尝试拖放 RigidBody2D,但是我注意到如果我将重力比例设置为 0,并且如果我将重力比例设置为 0.5,我的代码根本不起作用,但是如果我拖动它并停止移动,它会起作用鼠标一秒钟,它卡在它的位置,好像我确实将重力比例设置为 0。

extends RigidBody2D

var is_held = false
func _ready():
    set_process_input(true)

func _integrate_forces(state):
    i = i + 1
    var lv = state.get_linear_velocity()

    if is_held:
        lv = (get_viewport().get_mouse_pos() - get_pos()) * 16

    state.set_linear_velocity(lv)

func _input(event):
    if event.type == InputEvent.MOUSE_BUTTON and not event.pressed and event.button_index == BUTTON_LEFT:
        is_held = false

func _on_food_input_event( viewport, event, shape_idx ):
    if event.type == InputEvent.MOUSE_BUTTON and event.pressed and event.button_index == BUTTON_LEFT:
        is_held = true

最后,我正在尝试的是能够垂直或水平地拖放刚体,而不是两者或对角线。

4

1 回答 1

1

您必须进入 RigidBody2D 属性下的可视化编辑器,并将第一个属性设置为“Mode:Character”。您的功能“_integrate_forces”不会一直在“模式:刚性”中调用。当它停止时,引擎停止调用它。但它在“模式:字符”中一直被调用。这将解决你的问题。

于 2017-08-25T14:30:25.513 回答