using Godot; using System; public class DragAndDrop : KinematicBody2D { /* Convert this code to C# extends KinematicBody2D var dragging = false signal dragsignal; func _ready(): connect("dragsignal",self,"_set_drag_pc") func _process(delta): if dragging: var mousepos = get_viewport().get_mouse_position() self.position = Vector2(mousepos.x, mousepos.y) func _set_drag_pc(): dragging=!dragging func _on_KinematicBody2D_input_event(viewport, event, shape_idx): if event is InputEventMouseButton: if event.button_index == BUTTON_LEFT and event.pressed: emit_signal("dragsignal") elif event.button_index == BUTTON_LEFT and !event.pressed: emit_signal("dragsignal") elif event is InputEventScreenTouch: if event.pressed and event.get_index() == 0: self.position = event.get_position() */ private bool dragging = false; public override void _Ready() { Connect("dragsignal", this, "DragSignalImplemenmtation"); } public override void _Process(float delta) { if (dragging) { var mousepos = GetViewport().GetMousePosition(); Position = new Vector2(mousepos.x, mousepos.y); } } [Signal] public delegate void dragsignal(); private void DragSignalImplemenmtation() { dragging = !dragging; } public override void _Input(InputEvent @event) { if (@event is InputEventMouseButton) { var eventMouseButton = (InputEventMouseButton)@event; if (eventMouseButton.ButtonIndex == (int)ButtonList.Left && eventMouseButton.Pressed) { EmitSignal("dragsignal"); } else if (eventMouseButton.ButtonIndex == (int)ButtonList.Left && !eventMouseButton.Pressed) { EmitSignal("dragsignal"); } } else if (@event is InputEventScreenTouch) { var eventScreenTouch = (InputEventScreenTouch)@event; if (eventScreenTouch.Pressed && eventScreenTouch.Index == 0) { Position = eventScreenTouch.Position; } } } }