From 8cdfeb2bf0a47cdc91784a744e90a4052f3774ea Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 26 Mar 2024 12:54:53 +0100 Subject: [PATCH] Finish coding_the_player of first 2D game --- first_2d_game/Player.gd | 57 +++++++++++++++++++++++++++++++++++++ first_2d_game/Player.tscn | 7 ++++- first_2d_game/project.godot | 23 +++++++++++++++ 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 first_2d_game/Player.gd diff --git a/first_2d_game/Player.gd b/first_2d_game/Player.gd new file mode 100644 index 0000000..e9ad682 --- /dev/null +++ b/first_2d_game/Player.gd @@ -0,0 +1,57 @@ +extends Area2D + + +signal hit + + +## How fast the player will move. In pixels/sec +@export var speed = 400 +# Size of the game window. +var screen_size + + +# Called when the node enters the scene tree for the first time. +func _ready(): + screen_size = get_viewport_rect().size + hide() + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + var velocity = Vector2.ZERO + if Input.is_action_pressed('move_right'): + velocity.x += 1 + if Input.is_action_pressed('move_left'): + velocity.x -= 1 + if Input.is_action_pressed('move_down'): + velocity.y += 1 + if Input.is_action_pressed('move_up'): + velocity.y -= 1 + + if velocity.length() > 0: + velocity = velocity.normalized() * speed + $AnimatedSprite2D.play() + else: + $AnimatedSprite2D.stop() + + position += velocity * delta + position = position.clamp(Vector2.ZERO, screen_size) + + if velocity.x != 0: + $AnimatedSprite2D.animation = 'walk' + $AnimatedSprite2D.flip_v = false + $AnimatedSprite2D.flip_h = velocity.x < 0 + elif velocity.y != 0: + $AnimatedSprite2D.animation = 'up' + $AnimatedSprite2D.flip_v = velocity.y > 0 + + +func _on_body_entered(body): + hide() + hit.emit() + $CollisionShape2D.set_deffered('disabled', true) + +func start(pos): + position = pos + show() + $CollisionShape2D.disabled = false diff --git a/first_2d_game/Player.tscn b/first_2d_game/Player.tscn index 0760d5f..ac1a094 100644 --- a/first_2d_game/Player.tscn +++ b/first_2d_game/Player.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=7 format=3 uid="uid://ckfhsdod4ghug"] +[gd_scene load_steps=8 format=3 uid="uid://ckfhsdod4ghug"] [ext_resource type="Texture2D" uid="uid://cj2a3ls4jlkjk" path="res://art/playerGrey_up1.png" id="1_fur7b"] +[ext_resource type="Script" path="res://Player.gd" id="1_t1lbd"] [ext_resource type="Texture2D" uid="uid://cx65oby2yhlus" path="res://art/playerGrey_up2.png" id="2_vhw1d"] [ext_resource type="Texture2D" uid="uid://d05l3yu0vp17w" path="res://art/playerGrey_walk1.png" id="3_wjp5t"] [ext_resource type="Texture2D" uid="uid://c2ndsc14p6skg" path="res://art/playerGrey_walk2.png" id="4_bmoxy"] @@ -35,6 +36,8 @@ radius = 27.0 height = 68.0 [node name="Player" type="Area2D"] +position = Vector2(98, 106) +script = ExtResource("1_t1lbd") metadata/_edit_group_ = true [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] @@ -44,3 +47,5 @@ animation = &"walk" [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource("CapsuleShape2D_lftd4") + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/first_2d_game/project.godot b/first_2d_game/project.godot index 1ee7ecb..95ee8e1 100644 --- a/first_2d_game/project.godot +++ b/first_2d_game/project.godot @@ -20,6 +20,29 @@ window/size/viewport_width=480 window/size/viewport_height=720 window/stretch/mode="canvas_items" +[input] + +move_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} + [rendering] renderer/rendering_method="gl_compatibility"