Почему _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". Когда он останавливается, двигатель останавливается, чтобы вызвать его. Но он все время вызывается в "Режиме: Персонаж". Это решит вашу проблему.