extends Node2D # Original Forge map-import probe. Tiled's built-in exporter owns room.tscn. const SPEED = 90.0 var player: CharacterBody2D var spawn: Marker2D var paused = false var status: Label func _ready(): spawn = $Room/PlayerSpawn player = CharacterBody2D.new() player.name = "Probe" player.collision_layer = 2 player.collision_mask = 1 player.motion_mode = CharacterBody2D.MOTION_MODE_FLOATING var collider = CollisionShape2D.new() var shape = CircleShape2D.new() shape.radius = 6.0 collider.shape = shape player.add_child(collider) var marker = Polygon2D.new() marker.polygon = PackedVector2Array([Vector2(-6,0),Vector2(-4,-4),Vector2(0,-6),Vector2(4,-4),Vector2(6,0),Vector2(4,4),Vector2(0,6),Vector2(-4,4)]) marker.color = Color("2be6c3") player.add_child(marker) add_child(player) reset_probe() var camera = Camera2D.new() camera.position = Vector2(160,96) camera.zoom = Vector2(2,2) add_child(camera) var hud = CanvasLayer.new() add_child(hud) status = Label.new() status.position = Vector2(12,12) status.add_theme_font_size_override("font_size",14) status.add_theme_color_override("font_shadow_color",Color.BLACK) status.add_theme_constant_override("shadow_offset_x",1) status.add_theme_constant_override("shadow_offset_y",1) hud.add_child(status) refresh_status() func reset_probe(): player.position = spawn.position player.velocity = Vector2.ZERO func refresh_status(): status.text = "WASD / arrows: move P: pause R: reset\n" + ("Paused" if paused else "Test the walls, then reopen the project.") func _unhandled_key_input(event): if not event is InputEventKey or not event.pressed or event.echo: return if event.physical_keycode == KEY_P: paused = not paused player.velocity = Vector2.ZERO refresh_status() elif event.physical_keycode == KEY_R: reset_probe() func move_probe(direction: Vector2): player.velocity = Vector2.ZERO if paused else direction.limit_length(1.0) * SPEED player.move_and_slide() func _physics_process(_delta): var direction = Input.get_vector("ui_left","ui_right","ui_up","ui_down") if Input.is_physical_key_pressed(KEY_A): direction.x -= 1 if Input.is_physical_key_pressed(KEY_D): direction.x += 1 if Input.is_physical_key_pressed(KEY_W): direction.y -= 1 if Input.is_physical_key_pressed(KEY_S): direction.y += 1 move_probe(direction)