Glowing crystals mainly
This commit is contained in:
parent
ce0ef75241
commit
49e344f109
8 changed files with 624 additions and 188 deletions
|
|
@ -1,75 +1,91 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://di05lhhav43s7"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://di05lhhav43s7"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://durqtk0juny64" path="res://resources/particles/light_beam.png" id="1_px2l5"]
|
||||
[ext_resource type="Script" path="res://entities/scripts/crystal_glow.gd" id="2_dtblp"]
|
||||
[ext_resource type="Texture2D" uid="uid://b0v24ggq57237" path="res://resources/particles/smallcircle.png" id="3_3ioih"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_trlpq"]
|
||||
[sub_resource type="Curve" id="Curve_ffgoa"]
|
||||
_data = [Vector2(0, 0), 0.0, 1.4, 0, 0, Vector2(0.203642, 1), 0.0, 0.0, 0, 0, Vector2(0.799669, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
|
||||
point_count = 4
|
||||
|
||||
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_ruaam"]
|
||||
blend_mode = 1
|
||||
|
||||
[sub_resource type="Animation" id="Animation_bf3hv"]
|
||||
resource_name = "CrystalGlow"
|
||||
length = 5.0
|
||||
loop_mode = 1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:energy")
|
||||
tracks/0/path = NodePath("CrystalAreaLight:scale")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 2.6, 5),
|
||||
"transitions": PackedFloat32Array(-2, -2, -2),
|
||||
"times": PackedFloat32Array(0, 1.9, 3.2, 5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [2.8, 0.1, 2.8]
|
||||
"values": [Vector2(1, 1), Vector2(1.1, 1.1), Vector2(0.8, 0.8), Vector2(1, 1)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../CrystalAreaLight:energy")
|
||||
tracks/1/path = NodePath("CrystalAreaLight:modulate:a")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(-0.025, 1, 1.8, 2.8, 3.175, 3.875, 4.5, 4.975),
|
||||
"transitions": PackedFloat32Array(-2, -2, -2, -2, -2, -2, -2, -2),
|
||||
"times": PackedFloat32Array(0.00999999, 0.21, 0.61, 1.01, 1.61, 1.81, 2.2, 2.6, 4, 4.2, 4.6, 5),
|
||||
"transitions": PackedFloat32Array(-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2),
|
||||
"update": 0,
|
||||
"values": [1.0, 0.5, 1.0, 0.6, 0.8, 1.0, 1.2, 1.0]
|
||||
"values": [1.0, 0.5, 0.8, 1.0, 1.0, 0.5, 0.8, 1.0, 1.0, 0.5, 0.8, 1.0]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("CrystalAreaLargeLight:scale")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 2.6, 5),
|
||||
"transitions": PackedFloat32Array(-2, -2, -2),
|
||||
"update": 0,
|
||||
"values": [Vector2(2, 2), Vector2(2.2, 2.2), Vector2(2, 2)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("CrystalGlowLight:scale")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 2, 5),
|
||||
"transitions": PackedFloat32Array(-2, -2, -2),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1), Vector2(2, 1), Vector2(1, 1)]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("CrystalGlowLight:modulate:a")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0.1, 1.3, 2.8, 4, 5),
|
||||
"transitions": PackedFloat32Array(1, -2, 1, -2, 1),
|
||||
"update": 0,
|
||||
"values": [1.0, 0.5, 1.0, 0.2, 1.0]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_78u0w"]
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_r67ky"]
|
||||
_data = {
|
||||
"CrystalGlow": SubResource("Animation_trlpq")
|
||||
"CrystalGlow": SubResource("Animation_bf3hv")
|
||||
}
|
||||
|
||||
[sub_resource type="Curve" id="Curve_ffgoa"]
|
||||
_data = [Vector2(0, 0), 0.0, 1.4, 0, 0, Vector2(0.203642, 1), 0.0, 0.0, 0, 0, Vector2(0.799669, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
|
||||
point_count = 4
|
||||
|
||||
[node name="CrystalGlow" type="Node2D"]
|
||||
script = ExtResource("2_dtblp")
|
||||
|
||||
[node name="CrystalGlowAnimation" type="AnimationPlayer" parent="."]
|
||||
root_node = NodePath("../CrystalGlowLight")
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_78u0w")
|
||||
}
|
||||
autoplay = "CrystalGlow"
|
||||
|
||||
[node name="CrystalGlowLight" type="PointLight2D" parent="."]
|
||||
modulate = Color(1.5, 1.5, 1.5, 1)
|
||||
rotation = 3.14159
|
||||
scale = Vector2(1.71326, 1)
|
||||
color = Color(0.517647, 0.796078, 1, 1)
|
||||
energy = 2.8
|
||||
texture = ExtResource("1_px2l5")
|
||||
offset = Vector2(0, 50)
|
||||
texture_scale = 1.15
|
||||
|
||||
[node name="CrystalAreaLight" type="PointLight2D" parent="."]
|
||||
modulate = Color(1.5, 1.5, 1.5, 1)
|
||||
color = Color(0.372549, 1, 0.996078, 1)
|
||||
texture = ExtResource("3_3ioih")
|
||||
offset = Vector2(0, -6)
|
||||
texture_scale = 1.2
|
||||
|
||||
[node name="CPUParticles2D" type="CPUParticles2D" parent="."]
|
||||
[node name="CrystalParticles" type="CPUParticles2D" parent="."]
|
||||
self_modulate = Color(0, 1, 1, 0.384314)
|
||||
amount = 2
|
||||
lifetime = 5.0
|
||||
randomness = 0.1
|
||||
|
|
@ -85,3 +101,31 @@ scale_amount_min = 2.0
|
|||
scale_amount_max = 4.0
|
||||
scale_amount_curve = SubResource("Curve_ffgoa")
|
||||
color = Color(1, 1, 1, 0.164706)
|
||||
|
||||
[node name="CrystalGlowLight" type="Sprite2D" parent="."]
|
||||
modulate = Color(1.5, 1.5, 1.5, 1)
|
||||
self_modulate = Color(0.372549, 1, 0.996078, 0.0823529)
|
||||
material = SubResource("CanvasItemMaterial_ruaam")
|
||||
position = Vector2(0, -31)
|
||||
rotation = 3.14159
|
||||
texture = ExtResource("1_px2l5")
|
||||
offset = Vector2(0, 6)
|
||||
|
||||
[node name="CrystalAreaLight" type="Sprite2D" parent="."]
|
||||
self_modulate = Color(1.5, 1.5, 1.5, 0.408)
|
||||
material = SubResource("CanvasItemMaterial_ruaam")
|
||||
texture = ExtResource("3_3ioih")
|
||||
offset = Vector2(0, 6)
|
||||
|
||||
[node name="CrystalAreaLargeLight" type="Sprite2D" parent="."]
|
||||
modulate = Color(1.2, 1.2, 1.2, 1)
|
||||
self_modulate = Color(0, 1, 1, 0.109804)
|
||||
material = SubResource("CanvasItemMaterial_ruaam")
|
||||
position = Vector2(0, -12)
|
||||
scale = Vector2(2, 2)
|
||||
texture = ExtResource("3_3ioih")
|
||||
|
||||
[node name="CrystalGlowAnimation" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_r67ky")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,71 @@
|
|||
extends Node2D
|
||||
class_name CrystalGlow
|
||||
|
||||
func _ready() -> void:
|
||||
Log.pr("CrystalGlow ready")
|
||||
var glow_colour : String :
|
||||
set(value):
|
||||
glow_colour = value.to_lower()
|
||||
var orientation : String:
|
||||
set(value):
|
||||
orientation = value.to_lower()
|
||||
|
||||
var animation_start_timer : float
|
||||
var animation_start_offset : float = randf_range(0, 3)
|
||||
|
||||
var internals_updated : bool = false
|
||||
|
||||
@onready var animation_player : AnimationPlayer = $CrystalGlowAnimation
|
||||
@onready var glow_light : Sprite2D = $CrystalGlowLight
|
||||
@onready var glow_area : Sprite2D = $CrystalAreaLight
|
||||
@onready var glow_area_large : Sprite2D = $CrystalAreaLargeLight
|
||||
@onready var crystal_particles : CPUParticles2D = $CrystalParticles
|
||||
|
||||
func _process(delta : float) -> void:
|
||||
|
||||
# The first time this is processed in the scene we need to update the orientation and colour
|
||||
if !internals_updated:
|
||||
update()
|
||||
internals_updated = true
|
||||
|
||||
animation_start_timer += delta
|
||||
if animation_start_timer >= animation_start_offset and !animation_player.is_playing():
|
||||
animation_player.play('CrystalGlow')
|
||||
|
||||
func update() -> void:
|
||||
update_orientation()
|
||||
update_colour()
|
||||
|
||||
# Update the orientation of the crystal glow so its pointing in the right direction
|
||||
func update_orientation() -> void:
|
||||
if orientation == 'up':
|
||||
rotation = 0
|
||||
elif orientation == 'down':
|
||||
rotation = PI
|
||||
elif orientation == 'left':
|
||||
rotation = -PI/2
|
||||
elif orientation == 'right':
|
||||
rotation = PI/2
|
||||
|
||||
# Update the colour of the crystal glow
|
||||
func update_colour() -> void:
|
||||
|
||||
var base_blue : String = '5ffffe'
|
||||
var base_yellow : String = 'F2F230'
|
||||
var base_red : String = 'FF3333'
|
||||
|
||||
if glow_colour == 'blue':
|
||||
glow_light.self_modulate = base_blue + '15'
|
||||
glow_area.self_modulate = base_blue + '04'
|
||||
glow_area_large.self_modulate = base_blue + '04'
|
||||
crystal_particles.self_modulate = '00ffff62'
|
||||
elif glow_colour == 'yellow':
|
||||
glow_light.self_modulate = base_yellow + '15'
|
||||
glow_area.self_modulate = base_yellow + '04'
|
||||
glow_area_large.self_modulate = base_yellow + '04'
|
||||
crystal_particles.self_modulate = base_yellow + '62'
|
||||
elif glow_colour == 'red':
|
||||
glow_light.self_modulate = base_red + '15'
|
||||
glow_area.self_modulate = base_red + '04'
|
||||
glow_area_large.self_modulate = base_red + '04'
|
||||
crystal_particles.self_modulate = base_red + '62'
|
||||
else:
|
||||
pass
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue