Added Weapon
This commit is contained in:
@@ -8,6 +8,14 @@ var position : Vector2:
|
|||||||
return $Ship.position
|
return $Ship.position
|
||||||
|
|
||||||
|
|
||||||
|
func _input(event: InputEvent) -> void:
|
||||||
|
var weapons : Array = $Ship.weapons
|
||||||
|
var weapon_actions := { 0: "shoot_weapon_1", 1: "shoot_weapon_2" }
|
||||||
|
for index : int in weapon_actions:
|
||||||
|
if event.is_action_pressed(weapon_actions[index]) and weapons.size() > index:
|
||||||
|
$Ship.shoot(weapons[index])
|
||||||
|
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
var input_direction := Input.get_vector("move_left", "move_right", "move_up", "move_down")
|
var input_direction := Input.get_vector("move_left", "move_right", "move_up", "move_down")
|
||||||
$Ship.accelerate(input_direction, delta)
|
$Ship.accelerate(input_direction, delta)
|
||||||
|
|||||||
+20
-2
@@ -15,7 +15,11 @@ extends CharacterBody2D
|
|||||||
@export var deceleration : int
|
@export var deceleration : int
|
||||||
@export var max_speed : int
|
@export var max_speed : int
|
||||||
|
|
||||||
#var _velocity : Vector2
|
@onready var weapons : Array:
|
||||||
|
set(value):
|
||||||
|
pass
|
||||||
|
get:
|
||||||
|
return weapons
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
@@ -23,13 +27,22 @@ func _ready() -> void:
|
|||||||
texture.size = size
|
texture.size = size
|
||||||
$Sprite2D.texture = texture
|
$Sprite2D.texture = texture
|
||||||
|
|
||||||
|
var weapons_by_offset := {
|
||||||
|
8: preload("res://game/entities/weapon.tscn").instantiate(),
|
||||||
|
-8: preload("res://game/entities/weapon.tscn").instantiate(),
|
||||||
|
}
|
||||||
|
for offset : int in weapons_by_offset:
|
||||||
|
var weapon : Node2D = weapons_by_offset[offset]
|
||||||
|
weapon.position = Vector2(0, offset)
|
||||||
|
add_child(weapon)
|
||||||
|
weapons.append(weapon)
|
||||||
|
|
||||||
|
|
||||||
func _physics_process(_delta: float) -> void:
|
func _physics_process(_delta: float) -> void:
|
||||||
var was_collided := move_and_slide()
|
var was_collided := move_and_slide()
|
||||||
if was_collided:
|
if was_collided:
|
||||||
var normal := get_wall_normal()
|
var normal := get_wall_normal()
|
||||||
velocity -= normal.abs() * velocity
|
velocity -= normal.abs() * velocity
|
||||||
print(was_collided, get_wall_normal(), velocity)
|
|
||||||
|
|
||||||
|
|
||||||
func accelerate(direction: Vector2, delta: float) -> void:
|
func accelerate(direction: Vector2, delta: float) -> void:
|
||||||
@@ -50,3 +63,8 @@ func _get_new_speed(accel: float, decel: float, current_speed: float) -> float:
|
|||||||
return current_speed + (decel if current_speed < 0 else -decel)
|
return current_speed + (decel if current_speed < 0 else -decel)
|
||||||
else:
|
else:
|
||||||
return current_speed + accel
|
return current_speed + accel
|
||||||
|
|
||||||
|
|
||||||
|
func shoot(weapon: Node) -> void:
|
||||||
|
if weapon in weapons:
|
||||||
|
weapon.shoot()
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
extends Node2D
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
var texture := PlaceholderTexture2D.new()
|
||||||
|
texture.size = Vector2(10, 7)
|
||||||
|
$Sprite2D.texture = texture
|
||||||
|
|
||||||
|
|
||||||
|
func shoot() -> void:
|
||||||
|
print("shoot")
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dpqxs8hlql2o0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[gd_scene load_steps=2 format=3 uid="uid://dwm4iejnbuhxo"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dpqxs8hlql2o0" path="res://game/entities/weapon.gd" id="1_4oq3a"]
|
||||||
|
|
||||||
|
[node name="Weapon" type="Node2D"]
|
||||||
|
script = ExtResource("1_4oq3a")
|
||||||
|
|
||||||
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
@@ -14,6 +14,7 @@ anchors_preset = 0
|
|||||||
script = ExtResource("1_wp78b")
|
script = ExtResource("1_wp78b")
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
|
top_level = true
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 100.0
|
offset_left = 100.0
|
||||||
offset_top = 100.0
|
offset_top = 100.0
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ anchors_preset = 0
|
|||||||
script = ExtResource("1_chmv6")
|
script = ExtResource("1_chmv6")
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
|
top_level = true
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 100.0
|
offset_left = 100.0
|
||||||
offset_top = 100.0
|
offset_top = 100.0
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ anchors_preset = 0
|
|||||||
script = ExtResource("1_61pji")
|
script = ExtResource("1_61pji")
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
|
top_level = true
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 100.0
|
offset_left = 100.0
|
||||||
offset_top = 100.0
|
offset_top = 100.0
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ anchors_preset = 0
|
|||||||
script = ExtResource("1_inj1j")
|
script = ExtResource("1_inj1j")
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
|
top_level = true
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 100.0
|
offset_left = 100.0
|
||||||
offset_top = 100.0
|
offset_top = 100.0
|
||||||
|
|||||||
Reference in New Issue
Block a user