From ec7c28fda9ab4bfe49c228028350ef9fef1e52a5 Mon Sep 17 00:00:00 2001 From: Thomas Lavocat Date: Fri, 13 Oct 2023 21:06:07 +0200 Subject: [PATCH] =?UTF-8?q?prout:=20nuage=20de=20particules=20quand=20on?= =?UTF-8?q?=20p=C3=A8te!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Voici la fontionalité tant attendue et merveilleuse! Le prout de princesse. Mesdammes et messieurs vous n'allez pas en croire vos narines ni vos panflet pantouflés. La princesse en plus de son retour haptique à base de vibreur dans la manette vous offre également une prestation graphique des plus prestigieuse, à savoir, des particules! Et oui vous avez bien lu! Vous chez public singulier qui passe trop de temps à lires les messages de commits. La princesse vous communique la durée et la direction des dash proutés grâce à cette belle trainée verdâtre. Vous m'en direz des nouvelles! --- masks/smoke_particle.png | Bin 0 -> 3463 bytes masks/smoke_particle.png.import | 34 ++++++++++++++++++ masks/smoke_particle_16.png | Bin 0 -> 4503 bytes masks/smoke_particle_16.png.import | 34 ++++++++++++++++++ princesse.gd | 4 +++ princesse.tscn | 54 +++++++++++++++++++++++++++-- 6 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 masks/smoke_particle.png create mode 100644 masks/smoke_particle.png.import create mode 100644 masks/smoke_particle_16.png create mode 100644 masks/smoke_particle_16.png.import diff --git a/masks/smoke_particle.png b/masks/smoke_particle.png new file mode 100644 index 0000000000000000000000000000000000000000..6082a1396b1cb7f3c567c2e4e14bbf24d88e8adc GIT binary patch literal 3463 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 R7)+$dkdUU|`@1D&{{@YFdN2S0 literal 0 HcmV?d00001 diff --git a/masks/smoke_particle_16.png.import b/masks/smoke_particle_16.png.import new file mode 100644 index 0000000..7f467ce --- /dev/null +++ b/masks/smoke_particle_16.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bl4eehh16yo0r" +path="res://.godot/imported/smoke_particle_16.png-90c44d6bff680644df9c0fd938a657ae.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://masks/smoke_particle_16.png" +dest_files=["res://.godot/imported/smoke_particle_16.png-90c44d6bff680644df9c0fd938a657ae.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/princesse.gd b/princesse.gd index c8bfc90..2cdcabe 100644 --- a/princesse.gd +++ b/princesse.gd @@ -24,6 +24,8 @@ var gravity: int = ProjectSettings.get("physics/2d/default_gravity") @onready var camera := $Camera2D as Camera2D @onready var death_animation := $"Death player" as AnimationPlayer +@onready var nuage_prout := $"GPUParticles2D" as GPUParticles2D + ################################################################################ # # Constantes de déplacement à pimper dans l'inspecteur @@ -362,6 +364,7 @@ func dash() -> void: func cancel_dash() -> void: dash_step = -1 dashing=false + nuage_prout.emitting = false func choose_animation_orientation() -> void: # Oriente l'animation correctement en fonction de laquelle on joue et de @@ -528,6 +531,7 @@ func read_input() -> void: Input.start_joy_vibration(0, 1, 0.5, 0.2) available_dashs -=1 dashing = true + nuage_prout.emitting = true dash_fart.emit() # Limiter le dash en diagonnale car sinon il est trop grand # par rapport à un dash dans une seule direction diff --git a/princesse.tscn b/princesse.tscn index 8b6e1ac..91e12e3 100644 --- a/princesse.tscn +++ b/princesse.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=63 format=3 uid="uid://dv0mokf4eogm7"] +[gd_scene load_steps=71 format=3 uid="uid://dv0mokf4eogm7"] [ext_resource type="Script" path="res://princesse.gd" id="1_dkp7s"] [ext_resource type="Texture2D" uid="uid://dr7fyh2rufsyj" path="res://sprite/princess_falling_direction.png" id="2_hholp"] +[ext_resource type="Texture2D" uid="uid://bl4eehh16yo0r" path="res://masks/smoke_particle_16.png" id="2_jyxmd"] [ext_resource type="Texture2D" uid="uid://cc2vjgg2dw27g" path="res://sprite/princess_falling.png" id="3_kbaya"] [ext_resource type="Texture2D" uid="uid://bwod37xemy88x" path="res://sprite/princess.png" id="4_iiu2b"] [ext_resource type="Texture2D" uid="uid://cx58dasu8epvx" path="res://sprite/princess_idle.png" id="4_uydsc"] @@ -10,6 +11,43 @@ [ext_resource type="Texture2D" uid="uid://d23lmsjrjw1mk" path="res://sprite/princess_wall_stick.png" id="7_8dix4"] [ext_resource type="Texture2D" uid="uid://dgsn3ixn46anc" path="res://sprite/light.png" id="8_8c83t"] +[sub_resource type="Gradient" id="Gradient_anx4x"] + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_7kmv1"] +gradient = SubResource("Gradient_anx4x") + +[sub_resource type="Curve" id="Curve_iu7sd"] +min_value = -1.0 +_data = [Vector2(0, -1), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_jwai0"] +curve = SubResource("Curve_iu7sd") + +[sub_resource type="Curve" id="Curve_igy3q"] +_data = [Vector2(0.0365535, 0), 0.0, 0.0, 0, 0, Vector2(0.503916, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.852761), 0.0, 0.0, 0, 0] +point_count = 3 + +[sub_resource type="CurveTexture" id="CurveTexture_b7sj0"] +curve = SubResource("Curve_igy3q") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_n8y3m"] +emission_shape = 1 +emission_sphere_radius = 4.82 +particle_flag_disable_z = true +orbit_velocity_min = 0.0 +orbit_velocity_max = 0.0 +radial_accel_min = 15.0 +radial_accel_max = 15.0 +angle_max = 360.0 +scale_curve = SubResource("CurveTexture_b7sj0") +color = Color(0.360784, 0.741176, 0.458824, 1) +color_ramp = SubResource("GradientTexture1D_7kmv1") +hue_variation_curve = SubResource("CurveTexture_jwai0") +collision_mode = 1 +collision_friction = 0.0 +collision_bounce = 0.0 + [sub_resource type="AtlasTexture" id="AtlasTexture_i248f"] atlas = ExtResource("2_hholp") region = Rect2(0, 0, 24, 50) @@ -436,6 +474,18 @@ COYOTE_LENGTH = 7 COYOTE_GRAB_LENGTH = 20 WALK_INCR_AIR = 4 +[node name="GPUParticles2D" type="GPUParticles2D" parent="."] +texture_filter = 4 +position = Vector2(-3.33334, 10) +scale = Vector2(0.5, 0.5) +emitting = false +amount = 100 +process_material = SubResource("ParticleProcessMaterial_n8y3m") +texture = ExtResource("2_jyxmd") +lifetime = 2.0 +preprocess = 2.0 +speed_scale = 4.0 + [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] modulate = Color(0.823529, 0.823529, 0.823529, 1) sprite_frames = SubResource("SpriteFrames_q52wx") @@ -476,7 +526,7 @@ texture = SubResource("GradientTexture2D_t1uxd") texture_scale = 1.85 [node name="light" type="PointLight2D" parent="."] -position = Vector2(0, 1.66669) +position = Vector2(-1.66667, -1.66667) color = Color(1, 0.964706, 0.643137, 0.6) energy = 0.32 shadow_enabled = true