godot-shooter / commit
Removed most controls, now just using clicks. Added a destination red x, which appears when the user clicks on the game, and that's the ship's destination. Once the destination is reached, it disappears, but the ship continues flying in the same direction.
World.gd | 22 ++++++++++++++++++++++ World.tscn | 17 ++++++++++++++++- project.godot | 25 ++----------------------- 3 files changed, 40 insertions(+), 24 deletions(-) diff --git a/World.gd b/World.gd index e24ad4f..ad1285f 100644 --- a/World.gd +++ b/World.gd @@ -3,6 +3,8 @@ extends Node2D const Utils = preload("res://Utils.gd") const Enemy = preload("res://Enemy.tscn") export var enemy_count = 2 +var destination: Vector2 +var is_destination_set = false func _ready() -> void: for n in enemy_count: @@ -24,3 +26,23 @@ func add_new_enemy(should_be_visible: bool = false) -> void: enemy.connect("enemy_killed", self, "_on_enemy_killed") enemy.position = pos add_child(enemy) + +func _process(delta: float) -> void: + if Input.is_action_just_pressed("click"): + var pos = get_global_mouse_position() + destination = pos + is_destination_set = true + $Destination.position = pos + $Destination.visible = true + + if is_destination_set: + var diff = destination - $Player.position + var unit = diff.normalized() + $Player.velocity = unit * $Player.move_speed + $Destination.visible = true + else: + $Destination.visible = false + + +func _on_Destination_body_entered(body: Node) -> void: + is_destination_set = false diff --git a/World.tscn b/World.tscn index 0fd558f..3691585 100644 --- a/World.tscn +++ b/World.tscn @@ -1,10 +1,14 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=7 format=2] +[ext_resource path="res://assets/kenney_simple-space/PNG/Default/icon_crossLarge.png" type="Texture" id=1] [ext_resource path="res://Player.tscn" type="PackedScene" id=2] [ext_resource path="res://HUD.tscn" type="PackedScene" id=3] [ext_resource path="res://World.gd" type="Script" id=4] [ext_resource path="res://StarField.tscn" type="PackedScene" id=5] +[sub_resource type="CircleShape2D" id=1] +radius = 29.0172 + [node name="World" type="Node2D"] script = ExtResource( 4 ) enemy_count = 4 @@ -38,3 +42,14 @@ position = Vector2( 513, 302 ) [node name="CanvasLayer" type="CanvasLayer" parent="."] [node name="HUD" parent="CanvasLayer" instance=ExtResource( 3 )] + +[node name="Destination" type="Area2D" parent="."] + +[node name="XSprite" type="Sprite" parent="Destination"] +modulate = Color( 1, 0, 0, 1 ) +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Destination"] +shape = SubResource( 1 ) + +[connection signal="body_entered" from="Destination" to="." method="_on_Destination_body_entered"] diff --git a/project.godot b/project.godot index 87195fd..40b2e69 100644 --- a/project.godot +++ b/project.godot @@ -20,26 +20,6 @@ common/drop_mouse_on_gui_input_disabled=true [input] -move_up={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -move_down={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -move_left={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -move_right={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} exit={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) @@ -50,10 +30,9 @@ restart={ "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":82,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } -shoot={ +click={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":90,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) +"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) ] }