From c5f53b845a5d35b85bdeea741ec1c49a60d76ec9 Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Mon, 20 Oct 2025 22:21:01 +0300 Subject: [PATCH] Fixed placeholder texture. Added correct ship movement --- game/entities/player.gd | 21 +++++++++++++++------ game/entities/player.tscn | 16 ++++++++++------ game/entities/ship.gd | 37 ++++++++++++++++++++++++++++++++++++- game/entities/ship.tscn | 10 +++------- game/passage.gd | 2 +- 5 files changed, 65 insertions(+), 21 deletions(-) diff --git a/game/entities/player.gd b/game/entities/player.gd index 95a1309..271139f 100644 --- a/game/entities/player.gd +++ b/game/entities/player.gd @@ -1,10 +1,19 @@ -extends Node2D +extends Node +var position : Vector2: + set(value): + $Ship.position = value + get: + return $Ship.position + + func _process(delta: float) -> void: - var speed := 100 var input_direction := Input.get_vector("move_left", "move_right", "move_up", "move_down") - var velocity := input_direction * speed - position += velocity * delta - var screen_size := get_viewport_rect().size - position = position.clamp(Vector2.ZERO, screen_size) + print(input_direction) + + if input_direction.is_zero_approx(): + $Ship.decelerate($Ship.deceleration * delta) + else: + var acceleration : Vector2 = input_direction * $Ship.acceleration * delta + $Ship.accelerate(acceleration) diff --git a/game/entities/player.tscn b/game/entities/player.tscn index 7ca49b3..babbfc9 100644 --- a/game/entities/player.tscn +++ b/game/entities/player.tscn @@ -1,9 +1,13 @@ -[gd_scene load_steps=3 format=3 uid="uid://xpj7f3l1l51l"] +[gd_scene load_steps=3 format=3 uid="uid://bkv8y6n7chu3f"] -[ext_resource type="Script" uid="uid://c2uf62j1im13p" path="res://game/entities/player.gd" id="1_xkeht"] -[ext_resource type="PackedScene" uid="uid://dn44qgg4coedd" path="res://game/entities/ship.tscn" id="2_3a8sv"] +[ext_resource type="Script" uid="uid://c2uf62j1im13p" path="res://game/entities/player.gd" id="1_3a8sv"] +[ext_resource type="PackedScene" uid="uid://jvyagshykmgb" path="res://game/entities/ship.tscn" id="2_ktqbp"] -[node name="Player" type="Node2D"] -script = ExtResource("1_xkeht") +[node name="Player" type="Node"] +script = ExtResource("1_3a8sv") -[node name="Ship" parent="." instance=ExtResource("2_3a8sv")] +[node name="Ship" parent="." instance=ExtResource("2_ktqbp")] +size = Vector2(48, 32) +acceleration = 46 +deceleration = 23 +max_speed = 46 diff --git a/game/entities/ship.gd b/game/entities/ship.gd index a83c002..e0789d0 100644 --- a/game/entities/ship.gd +++ b/game/entities/ship.gd @@ -1,9 +1,44 @@ extends Node2D -@export var size : Vector2 +@export var size : Vector2: + set(value): + size = value + if $Sprite2D.texture: + $Sprite2D.texture.size = value + get: + return size + +@export var acceleration : int +@export var deceleration : int +@export var max_speed : int + +var _velocity : Vector2 func _ready() -> void: var texture := PlaceholderTexture2D.new() texture.size = size $Sprite2D.texture = texture + + +func _process(delta: float) -> void: + position += _velocity * delta + + +func accelerate(value: Vector2) -> void: + _velocity += value + _velocity = _velocity.clamp(Vector2(-max_speed, -max_speed), Vector2(max_speed, max_speed)) + + +func decelerate(value: float) -> void: + var current_speed := _velocity.length() + + if current_speed <= 0: + _velocity = Vector2.ZERO + return + + var new_speed := current_speed - value + if new_speed < 0: + new_speed = 0 + + _velocity = _velocity.normalized() * new_speed diff --git a/game/entities/ship.tscn b/game/entities/ship.tscn index 1ed7c41..4416c72 100644 --- a/game/entities/ship.tscn +++ b/game/entities/ship.tscn @@ -1,12 +1,8 @@ -[gd_scene load_steps=2 format=3 uid="uid://dn44qgg4coedd"] +[gd_scene load_steps=2 format=3 uid="uid://jvyagshykmgb"] -[sub_resource type="GDScript" id="GDScript_3a8sv"] -script/source = "class_name Ship - -extends Node2D -" +[ext_resource type="Script" uid="uid://cesibaqtrgotl" path="res://game/entities/ship.gd" id="1_6isjb"] [node name="Ship" type="Node2D"] -script = SubResource("GDScript_3a8sv") +script = ExtResource("1_6isjb") [node name="Sprite2D" type="Sprite2D" parent="."] diff --git a/game/passage.gd b/game/passage.gd index 7a0b6cd..ce581b2 100644 --- a/game/passage.gd +++ b/game/passage.gd @@ -2,7 +2,7 @@ extends Node func _ready() -> void: - var player : Node2D = load("res://game/entities/player.tscn").instantiate() + var player : Node = load("res://game/entities/player.tscn").instantiate() player.position = Vector2(100, 100) add_child(player)