Generalized interactable template. Created health pickup derived class.
This commit is contained in:
parent
a556afbe5f
commit
e4a6188d89
BIN
assets/quick_health.png
Normal file
BIN
assets/quick_health.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 566 B |
35
assets/quick_health.png.import
Normal file
35
assets/quick_health.png.import
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/quick_health.png-ab4d63b30abc1b0088589c308b6afa54.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/quick_health.png"
|
||||||
|
dest_files=[ "res://.import/quick_health.png-ab4d63b30abc1b0088589c308b6afa54.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
||||||
|
|
@ -24,15 +24,20 @@ _global_script_classes=[ {
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://src/components/Health_Component.gd"
|
"path": "res://src/components/Health_Component.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "Interactable",
|
||||||
|
"class": "HealthPickup",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://src/Interactables/HealthPickup.gd"
|
||||||
|
}, {
|
||||||
"base": "Area2D",
|
"base": "Area2D",
|
||||||
"class": "Interactable",
|
"class": "Interactable",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://src/components/Interactable_Component.gd"
|
"path": "res://src/templates/Interactable/Interactable_Component.gd"
|
||||||
}, {
|
}, {
|
||||||
"base": "Node2D",
|
"base": "Node2D",
|
||||||
"class": "Interactable_Receiver",
|
"class": "Interactable_Receiver",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://src/components/Interactable_Receiver.gd"
|
"path": "res://src/templates/Interactable/Interactable_Receiver.gd"
|
||||||
}, {
|
}, {
|
||||||
"base": "Node",
|
"base": "Node",
|
||||||
"class": "MovementComponent",
|
"class": "MovementComponent",
|
||||||
|
|
@ -73,6 +78,7 @@ _global_script_class_icons={
|
||||||
"Actor": "",
|
"Actor": "",
|
||||||
"FrameSoundEffects": "",
|
"FrameSoundEffects": "",
|
||||||
"HealthComponent": "",
|
"HealthComponent": "",
|
||||||
|
"HealthPickup": "",
|
||||||
"Interactable": "",
|
"Interactable": "",
|
||||||
"Interactable_Receiver": "",
|
"Interactable_Receiver": "",
|
||||||
"MovementComponent": "",
|
"MovementComponent": "",
|
||||||
|
|
|
||||||
14
src/Interactables/Chest.gd
Normal file
14
src/Interactables/Chest.gd
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
extends Interactable
|
||||||
|
|
||||||
|
|
||||||
|
# Declare member variables here. Examples:
|
||||||
|
# var a = 2
|
||||||
|
# var b = "text"
|
||||||
|
|
||||||
|
onready var sprite: Sprite = $Sprite
|
||||||
|
|
||||||
|
|
||||||
|
func trigger_interaction():
|
||||||
|
# This is something that should maybe be extended for every differant interactible.
|
||||||
|
# They could inherit from this base class and implement this function.
|
||||||
|
sprite.frame = 1
|
||||||
21
src/Interactables/Chest.tscn
Normal file
21
src/Interactables/Chest.tscn
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
[gd_scene load_steps=5 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://src/templates/Interactable/Interactable_Component.tscn" type="PackedScene" id=1]
|
||||||
|
[ext_resource path="res://src/Interactables/Chest.gd" type="Script" id=2]
|
||||||
|
[ext_resource path="res://assets/High Forest/Assets/Interior-01.png" type="Texture" id=3]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id=1]
|
||||||
|
|
||||||
|
[node name="Chest" instance=ExtResource( 1 )]
|
||||||
|
script = ExtResource( 2 )
|
||||||
|
|
||||||
|
[node name="Sprite" type="Sprite" parent="." index="0"]
|
||||||
|
texture = ExtResource( 3 )
|
||||||
|
vframes = 2
|
||||||
|
region_enabled = true
|
||||||
|
region_rect = Rect2( 49, 80, 30, 64 )
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="1"]
|
||||||
|
modulate = Color( 0.0313726, 1, 0, 1 )
|
||||||
|
position = Vector2( 0, 3 )
|
||||||
|
shape = SubResource( 1 )
|
||||||
12
src/Interactables/HealthPickup.gd
Normal file
12
src/Interactables/HealthPickup.gd
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
class_name HealthPickup
|
||||||
|
extends Interactable
|
||||||
|
|
||||||
|
|
||||||
|
onready var health_icon: AnimatedSprite = $AnimatedSprite
|
||||||
|
|
||||||
|
func trigger_interaction():
|
||||||
|
# This is something that should maybe be extended for every differant interactible.
|
||||||
|
# They could inherit from this base class and implement this function.
|
||||||
|
# sprite.frame = 1
|
||||||
|
queue_free()
|
||||||
|
|
||||||
19
src/Interactables/HealthPickup.tscn
Normal file
19
src/Interactables/HealthPickup.tscn
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[gd_scene load_steps=5 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://src/Interactables/HealthPickup.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://src/templates/Interactable/Interactable_Component.tscn" type="PackedScene" id=2]
|
||||||
|
[ext_resource path="res://src/Interactables/QuickHealthPickup.tres" type="SpriteFrames" id=3]
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id=1]
|
||||||
|
radius = 6.0
|
||||||
|
|
||||||
|
[node name="HealthPickup" instance=ExtResource( 2 )]
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="AnimatedSprite" type="AnimatedSprite" parent="." index="0"]
|
||||||
|
frames = ExtResource( 3 )
|
||||||
|
frame = 1
|
||||||
|
playing = true
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="1"]
|
||||||
|
shape = SubResource( 1 )
|
||||||
27
src/Interactables/QuickHealthPickup.tres
Normal file
27
src/Interactables/QuickHealthPickup.tres
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
[gd_resource type="SpriteFrames" load_steps=6 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://assets/quick_health.png" type="Texture" id=1]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id=1]
|
||||||
|
atlas = ExtResource( 1 )
|
||||||
|
region = Rect2( 0, 0, 15, 13 )
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id=2]
|
||||||
|
atlas = ExtResource( 1 )
|
||||||
|
region = Rect2( 15, 0, 15, 13 )
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id=3]
|
||||||
|
atlas = ExtResource( 1 )
|
||||||
|
region = Rect2( 30, 0, 15, 13 )
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id=4]
|
||||||
|
atlas = ExtResource( 1 )
|
||||||
|
region = Rect2( 45, 0, 15, 13 )
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
animations = [ {
|
||||||
|
"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ) ],
|
||||||
|
"loop": true,
|
||||||
|
"name": "default",
|
||||||
|
"speed": 5.0
|
||||||
|
} ]
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
[gd_scene load_steps=7 format=2]
|
[gd_scene load_steps=8 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1]
|
[ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://assets/Tiles/Assets/Demo TileSet.tres" type="TileSet" id=2]
|
[ext_resource path="res://assets/Tiles/Assets/Demo TileSet.tres" type="TileSet" id=2]
|
||||||
[ext_resource path="res://assets/Backgrounds/bgmuck.png" type="Texture" id=3]
|
[ext_resource path="res://assets/Backgrounds/bgmuck.png" type="Texture" id=3]
|
||||||
[ext_resource path="res://src/components/Interactable_Component.tscn" type="PackedScene" id=4]
|
[ext_resource path="res://src/Interactables/Chest.tscn" type="PackedScene" id=4]
|
||||||
|
[ext_resource path="res://src/Interactables/HealthPickup.tscn" type="PackedScene" id=5]
|
||||||
[ext_resource path="res://assets/Music/platformer_level03_loop.ogg" type="AudioStream" id=6]
|
[ext_resource path="res://assets/Music/platformer_level03_loop.ogg" type="AudioStream" id=6]
|
||||||
[ext_resource path="res://src/enemyC/EnemyC.tscn" type="PackedScene" id=7]
|
[ext_resource path="res://src/enemyC/EnemyC.tscn" type="PackedScene" id=7]
|
||||||
|
|
||||||
|
|
@ -73,5 +74,11 @@ __meta__ = {
|
||||||
}
|
}
|
||||||
actor_type = "NPC"
|
actor_type = "NPC"
|
||||||
|
|
||||||
[node name="Interactable_Component" parent="." instance=ExtResource( 4 )]
|
[node name="HealthPickup" parent="." instance=ExtResource( 5 )]
|
||||||
position = Vector2( 186, 144 )
|
position = Vector2( 226, 153 )
|
||||||
|
|
||||||
|
[node name="Chest2" parent="." instance=ExtResource( 4 )]
|
||||||
|
position = Vector2( 319, 112 )
|
||||||
|
|
||||||
|
[node name="Chest" parent="." instance=ExtResource( 4 )]
|
||||||
|
position = Vector2( 187, 144 )
|
||||||
|
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
[gd_scene load_steps=4 format=2]
|
|
||||||
|
|
||||||
[ext_resource path="res://assets/High Forest/Assets/Interior-01.png" type="Texture" id=1]
|
|
||||||
[ext_resource path="res://src/components/Interactable_Component.gd" type="Script" id=2]
|
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id=1]
|
|
||||||
|
|
||||||
[node name="Interactable_Component" type="Area2D"]
|
|
||||||
script = ExtResource( 2 )
|
|
||||||
sprite_node = NodePath("Sprite")
|
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite" parent="."]
|
|
||||||
texture = ExtResource( 1 )
|
|
||||||
vframes = 2
|
|
||||||
region_enabled = true
|
|
||||||
region_rect = Rect2( 49, 80, 30, 64 )
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
|
||||||
modulate = Color( 0.290196, 1, 0, 1 )
|
|
||||||
position = Vector2( -1, 3 )
|
|
||||||
shape = SubResource( 1 )
|
|
||||||
|
|
||||||
[connection signal="body_entered" from="." to="." method="_on_Interactable_Component_body_entered"]
|
|
||||||
[connection signal="body_exited" from="." to="." method="_on_Interactable_Component_body_exited"]
|
|
||||||
|
|
@ -26,7 +26,11 @@ func hit_Receiver(damage):
|
||||||
|
|
||||||
func touch_the_thing(the_thing: Interactable) -> bool:
|
func touch_the_thing(the_thing: Interactable) -> bool:
|
||||||
print("You see! a THING...", the_thing.name)
|
print("You see! a THING...", the_thing.name)
|
||||||
|
if the_thing is HealthPickup:
|
||||||
|
# Do some healthy stuff.
|
||||||
|
the_thing.trigger_interaction()
|
||||||
return false
|
return false
|
||||||
|
return true
|
||||||
|
|
||||||
func _on_attack_do_attack():
|
func _on_attack_do_attack():
|
||||||
var is_shooting = false
|
var is_shooting = false
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
[ext_resource path="res://src/Gun.gd" type="Script" id=13]
|
[ext_resource path="res://src/Gun.gd" type="Script" id=13]
|
||||||
[ext_resource path="res://src/playerD/states/roll.gd" type="Script" id=14]
|
[ext_resource path="res://src/playerD/states/roll.gd" type="Script" id=14]
|
||||||
[ext_resource path="res://src/state_animated_actor.gd" type="Script" id=15]
|
[ext_resource path="res://src/state_animated_actor.gd" type="Script" id=15]
|
||||||
[ext_resource path="res://src/components/Interactable_Receiver.gd" type="Script" id=16]
|
[ext_resource path="res://src/templates/Interactable/Interactable_Receiver.gd" type="Script" id=16]
|
||||||
|
|
||||||
[sub_resource type="StreamTexture" id=90]
|
[sub_resource type="StreamTexture" id=90]
|
||||||
load_path = "res://.import/Mega.png-93dfe0790902b932f7b46f7b23c5d4e7.stex"
|
load_path = "res://.import/Mega.png-93dfe0790902b932f7b46f7b23c5d4e7.stex"
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,8 @@ extends Area2D
|
||||||
# Declare member variables here. Examples:
|
# Declare member variables here. Examples:
|
||||||
# var a = 2
|
# var a = 2
|
||||||
# var b = "text"
|
# var b = "text"
|
||||||
export (NodePath) var sprite_node
|
|
||||||
|
|
||||||
onready var sprite: Sprite = get_node(sprite_node)
|
export var type_name :String
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
|
|
@ -28,8 +27,7 @@ func _ready():
|
||||||
func trigger_interaction():
|
func trigger_interaction():
|
||||||
# This is something that should maybe be extended for every differant interactible.
|
# This is something that should maybe be extended for every differant interactible.
|
||||||
# They could inherit from this base class and implement this function.
|
# They could inherit from this base class and implement this function.
|
||||||
sprite.frame = 1
|
# sprite.frame = 1
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
9
src/templates/Interactable/Interactable_Component.tscn
Normal file
9
src/templates/Interactable/Interactable_Component.tscn
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://src/templates/Interactable/Interactable_Component.gd" type="Script" id=2]
|
||||||
|
|
||||||
|
[node name="Interactable_Template" type="Area2D"]
|
||||||
|
script = ExtResource( 2 )
|
||||||
|
|
||||||
|
[connection signal="body_entered" from="." to="." method="_on_Interactable_Component_body_entered"]
|
||||||
|
[connection signal="body_exited" from="." to="." method="_on_Interactable_Component_body_exited"]
|
||||||
Loading…
Reference in New Issue
Block a user