Почему _integrate_forces не работает, чтобы RigidBody2D установил Gravity Scale в 0?

Я пытаюсь перетащить RigidBody2D, однако я заметил, что мой код не работает вообще, если я устанавливаю Gravity Scale = 0, и если я устанавливаю Gravity Scale на 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

В конце концов я пытаюсь перетаскивать твердое тело вертикально или горизонтально, а не одновременно и не по диагонали.

1 ответ

Вы должны зайти в ваш визуальный редактор в свойствах RigidBody2D и установить первое свойство в "Mode:Character". Ваша функция "_integrate_forces" не вызывается все время в "Mode:Rigid". Когда он останавливается, двигатель останавливается, чтобы вызвать его. Но он все время вызывается в "Режиме: Персонаж". Это решит вашу проблему.

Другие вопросы по тегам