Missiles unlockable
This commit is contained in:
parent
2e1bcbc225
commit
0f3f6f0133
|
@ -0,0 +1,5 @@
|
|||
extends Powerup
|
||||
|
||||
func _pickup():
|
||||
PlayerStats.missiles_unlocked = true
|
||||
queue_free()
|
|
@ -0,0 +1,18 @@
|
|||
[gd_scene load_steps=5 format=2]
|
||||
|
||||
[ext_resource path="res://Scenes/Player/PowerUp.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://Assets/Player/PlayerMissile.png" type="Texture" id=2]
|
||||
[ext_resource path="res://Scenes/Player/MissilesPowerup.gd" type="Script" id=3]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
extents = Vector2( 3, 7 )
|
||||
|
||||
[node name="MissilesPowerup" instance=ExtResource( 1 )]
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
rotation = -1.5708
|
||||
texture = ExtResource( 2 )
|
||||
|
||||
[node name="Collision" parent="." index="1"]
|
||||
shape = SubResource( 1 )
|
|
@ -39,6 +39,7 @@ onready var playerGun = $Sprite/PlayerGun
|
|||
onready var muzzle = $Sprite/PlayerGun/Sprite/Muzzle
|
||||
onready var fireBulletTimer = $FireBulletTimer
|
||||
onready var blinkAnimator = $BlinkAnimator
|
||||
onready var powerupDetector = $PowerupDetector
|
||||
|
||||
|
||||
func set_invincible(value):
|
||||
|
@ -82,7 +83,7 @@ func _physics_process(delta):
|
|||
if Input.is_action_pressed("fire") and fireBulletTimer.time_left == 0:
|
||||
fire_bullet()
|
||||
|
||||
if Input.is_action_pressed("fire_missile") and fireBulletTimer.time_left == 0 and PlayerStats.missiles > 0:
|
||||
if Input.is_action_pressed("fire_missile") and fireBulletTimer.time_left == 0 and PlayerStats.missiles > 0 and PlayerStats.missiles_unlocked:
|
||||
fire_missile()
|
||||
|
||||
func fire_bullet():
|
||||
|
@ -237,3 +238,7 @@ func _on_Hurtbox_hit(damage):
|
|||
|
||||
func _on_died():
|
||||
queue_free()
|
||||
|
||||
func _on_PowerupDetector_area_entered(area):
|
||||
if area is Powerup:
|
||||
area._pickup()
|
||||
|
|
|
@ -174,6 +174,15 @@ shape = ExtResource( 6 )
|
|||
|
||||
[node name="InvincibleTimer" type="Timer" parent="."]
|
||||
|
||||
[node name="PowerupDetector" type="Area2D" parent="."]
|
||||
collision_layer = 0
|
||||
collision_mask = 32
|
||||
|
||||
[node name="Collision" type="CollisionShape2D" parent="PowerupDetector"]
|
||||
position = Vector2( 0, -7 )
|
||||
shape = ExtResource( 6 )
|
||||
|
||||
[connection signal="hit" from="Hurtbox" to="." method="_on_Hurtbox_hit"]
|
||||
[connection signal="area_entered" from="PowerupDetector" to="." method="_on_PowerupDetector_area_entered"]
|
||||
|
||||
[editable path="Hurtbox"]
|
||||
|
|
|
@ -3,10 +3,12 @@ class_name PlayerStats
|
|||
|
||||
var max_health = 4
|
||||
var health = max_health setget set_health
|
||||
var missiles_unlocked = false setget set_missiles_unlocked
|
||||
var max_missiles = 3
|
||||
var missiles = max_missiles setget set_missiles
|
||||
|
||||
signal player_health_changed(value)
|
||||
signal player_missiles_unlocked(value)
|
||||
signal player_missiles_changed(value)
|
||||
signal player_died
|
||||
|
||||
|
@ -23,3 +25,7 @@ func set_health(value):
|
|||
func set_missiles(value):
|
||||
missiles = clamp(value, 0, max_missiles)
|
||||
emit_signal("player_missiles_changed", missiles)
|
||||
|
||||
func set_missiles_unlocked(value):
|
||||
missiles_unlocked = value
|
||||
emit_signal("player_missiles_unlocked", value)
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
extends Area2D
|
||||
class_name Powerup
|
||||
|
||||
var PlayerStats = ResourceLoader.PlayerStats
|
||||
|
||||
func _pickup():
|
||||
pass
|
|
@ -0,0 +1,12 @@
|
|||
[gd_scene load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://Scenes/Player/PowerUp.gd" type="Script" id=1]
|
||||
|
||||
[node name="PowerUp" type="Area2D"]
|
||||
collision_layer = 32
|
||||
collision_mask = 0
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
|
||||
[node name="Collision" type="CollisionShape2D" parent="."]
|
|
@ -6,6 +6,10 @@ onready var label = $Label
|
|||
|
||||
func _ready():
|
||||
PlayerStats.connect("player_missiles_changed", self, "_on_player_missiles_changed")
|
||||
PlayerStats.connect("player_missiles_unlocked", self, "_on_player_missiles_unlocked")
|
||||
|
||||
func _on_player_missiles_changed(value):
|
||||
label.text = str(value)
|
||||
|
||||
func _on_player_missiles_unlocked(value):
|
||||
visible = value
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
[ext_resource path="res://Scenes/UI/MissilesUI.gd" type="Script" id=3]
|
||||
|
||||
[node name="MissilesUI" type="HBoxContainer"]
|
||||
visible = false
|
||||
margin_right = 33.0
|
||||
margin_bottom = 12.0
|
||||
script = ExtResource( 3 )
|
||||
|
|
|
@ -16,6 +16,7 @@ margin_bottom = 16.0
|
|||
visible = false
|
||||
|
||||
[node name="MissilesUI" parent="." instance=ExtResource( 3 )]
|
||||
visible = false
|
||||
margin_left = 4.0
|
||||
margin_top = 19.0
|
||||
margin_right = 37.0
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=12 format=2]
|
||||
[gd_scene load_steps=13 format=2]
|
||||
|
||||
[ext_resource path="res://Scenes/World/TileMap.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://Scenes/Player/Player.tscn" type="PackedScene" id=2]
|
||||
|
@ -11,6 +11,7 @@
|
|||
[ext_resource path="res://Scenes/Enemies/PlantEnemy.tscn" type="PackedScene" id=9]
|
||||
[ext_resource path="res://Scenes/Enemies/CrawlingEnemy.tscn" type="PackedScene" id=10]
|
||||
[ext_resource path="res://Scenes/Objects/Brick.tscn" type="PackedScene" id=11]
|
||||
[ext_resource path="res://Scenes/Player/MissilesPowerup.tscn" type="PackedScene" id=12]
|
||||
|
||||
[node name="World" type="Node"]
|
||||
script = ExtResource( 3 )
|
||||
|
@ -66,5 +67,8 @@ position = Vector2( 111, 64 )
|
|||
[node name="Brick5" parent="." instance=ExtResource( 11 )]
|
||||
position = Vector2( 111, 48 )
|
||||
|
||||
[node name="MissilesPowerup" parent="." instance=ExtResource( 12 )]
|
||||
position = Vector2( 64, 42 )
|
||||
|
||||
[editable path="Player"]
|
||||
[editable path="Player/Hurtbox"]
|
||||
|
|
|
@ -18,10 +18,16 @@ _global_script_classes=[ {
|
|||
"class": "PlayerStats",
|
||||
"language": "GDScript",
|
||||
"path": "res://Scenes/Player/PlayerStats.gd"
|
||||
}, {
|
||||
"base": "Area2D",
|
||||
"class": "Powerup",
|
||||
"language": "GDScript",
|
||||
"path": "res://Scenes/Player/PowerUp.gd"
|
||||
} ]
|
||||
_global_script_class_icons={
|
||||
"MainInstances": "",
|
||||
"PlayerStats": ""
|
||||
"PlayerStats": "",
|
||||
"Powerup": ""
|
||||
}
|
||||
|
||||
[application]
|
||||
|
@ -123,6 +129,7 @@ fire_missile={
|
|||
2d_physics/layer_3="PlayerHurtbox"
|
||||
2d_physics/layer_4="EnemyHurtbox"
|
||||
2d_physics/layer_5="Brick"
|
||||
2d_physics/layer_6="PowerUp"
|
||||
|
||||
[rendering]
|
||||
|
||||
|
|
Loading…
Reference in New Issue