From 4bd47b9a6c11c6c7fde048fd742eaf3996f72a03 Mon Sep 17 00:00:00 2001 From: Hurlu Date: Sat, 4 Apr 2020 15:57:27 +0200 Subject: [PATCH] Gnomisme et Gigantisation --- Scene/TestScene.tscn | 40 ++++++++++++++++++++++- Scripts/PaintEffects/Downscale.gd | 49 ++++++++++++++++++++++++++++ Scripts/PaintEffects/Invisibility.gd | 4 +-- Scripts/PaintEffects/Upscale.gd | 49 ++++++++++++++++++++++++++++ Scripts/Player.gd | 8 ++--- 5 files changed, 143 insertions(+), 7 deletions(-) create mode 100644 Scripts/PaintEffects/Downscale.gd create mode 100644 Scripts/PaintEffects/Upscale.gd diff --git a/Scene/TestScene.tscn b/Scene/TestScene.tscn index 1ed4015..b330133 100644 --- a/Scene/TestScene.tscn +++ b/Scene/TestScene.tscn @@ -28,5 +28,43 @@ shape = SubResource( 1 ) position = Vector2( 221.278, 126.847 ) [node name="Clopinette" parent="." instance=ExtResource( 3 )] -position = Vector2( 149.267, 34.1946 ) +position = Vector2( 90.0584, 291.46 ) scriptName = "res://Scripts/PaintEffects/Invisibility.gd" + +[node name="Clopinette2" parent="." instance=ExtResource( 3 )] +position = Vector2( 354.897, 298.002 ) +scriptName = "res://Scripts/PaintEffects/Upscale.gd" + +[node name="Clopinette3" parent="." instance=ExtResource( 3 )] +position = Vector2( 589.812, 295.726 ) +scriptName = "res://Scripts/PaintEffects/Downscale.gd" + +[node name="Label" type="Label" parent="."] +margin_left = 60.8618 +margin_top = 252.548 +margin_right = 128.862 +margin_bottom = 266.548 +text = "Invisibilité" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label2" type="Label" parent="."] +margin_left = 313.979 +margin_top = 250.273 +margin_right = 397.979 +margin_bottom = 264.273 +text = "Gigantisation" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label3" type="Label" parent="."] +margin_left = 551.169 +margin_top = 251.979 +margin_right = 635.169 +margin_bottom = 265.979 +text = "Gnomisme" +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/Scripts/PaintEffects/Downscale.gd b/Scripts/PaintEffects/Downscale.gd new file mode 100644 index 0000000..d909189 --- /dev/null +++ b/Scripts/PaintEffects/Downscale.gd @@ -0,0 +1,49 @@ +extends Node + +#The time, in seconds, it should take for the character to grow down +export var GrowDownTime = 2.0 +export var IsSmallTime = 5.0 +export var GrowBigTime = 1.0 + +#How much smaller should the player become +export var GrowDownFactor = 5 + +#How much faster should the player become +export var FastFactor = 8 + +func DwarfRoutine(player, delta): + var elapsed = delta + var fast_speed = player.MAX_SPEED * FastFactor + var slow_speed = player.MAX_SPEED + var fast_acc = player.ACCELERATION * (FastFactor / 2) + var slow_acc = player.ACCELERATION + var small_scale = player.transform.get_scale() / GrowDownFactor + var big_scale = player.transform.get_scale() + var sprite = player.get_node("Sprite") + var coll = player.get_node("CollisionShape2D") + + while elapsed < GrowDownTime: + player.MAX_SPEED = lerp(slow_speed, fast_speed, elapsed / GrowDownTime) + player.ACCELERATION = lerp(slow_acc, fast_acc, elapsed / GrowDownTime) + setScale(sprite, coll, lerp(big_scale, small_scale, elapsed / GrowDownTime)) + elapsed += yield() + + elapsed -= GrowDownTime; + while elapsed < IsSmallTime: + elapsed += yield() + elapsed -= IsSmallTime; + + while elapsed < GrowBigTime: + player.MAX_SPEED = lerp(fast_speed, slow_speed, elapsed / GrowBigTime) + player.ACCELERATION = lerp(fast_acc, slow_acc, elapsed / GrowBigTime) + setScale(sprite, coll, lerp(small_scale, big_scale, elapsed / GrowBigTime)) + elapsed += yield() + +func setScale(sprite, coll, scale): + sprite.scale = scale; + coll.scale = scale; + +func StartEffect(player): + var rout = DwarfRoutine(player, 0) + return rout + diff --git a/Scripts/PaintEffects/Invisibility.gd b/Scripts/PaintEffects/Invisibility.gd index 30a7106..4b30005 100644 --- a/Scripts/PaintEffects/Invisibility.gd +++ b/Scripts/PaintEffects/Invisibility.gd @@ -3,10 +3,10 @@ extends Node #The time, in seconds, it should take for the character to fade to FadeOutValue export var FadeOutTime = 2.0 export var InvisTime = 5.0 -export var FadeInTime = 2.0 +export var FadeInTime = 1.0 #The alpha value we aim for when fading out -export var FadeOutValue = 0.05 +export var FadeOutValue = 0.025 func AlmostFadeOutRoutine(player, delta): var sprite : Sprite = player.get_node("Sprite") diff --git a/Scripts/PaintEffects/Upscale.gd b/Scripts/PaintEffects/Upscale.gd new file mode 100644 index 0000000..6fe52b9 --- /dev/null +++ b/Scripts/PaintEffects/Upscale.gd @@ -0,0 +1,49 @@ +extends Node + +#The time, in seconds, it should take for the character to grow up +export var GrowUpTime = 2.0 +export var IsBigTime = 5.0 +export var GrowDownTime = 1.0 + +#How much bigger should the player become +export var GrowUpFactor = 5 + +#How much slower should the player become +export var SlowFactor = 8 + +func GiantRoutine(player, delta): + var elapsed = delta + var fast_speed = player.MAX_SPEED + var slow_speed = player.MAX_SPEED / SlowFactor + var fast_acc = player.ACCELERATION + var slow_acc = player.ACCELERATION / SlowFactor + var small_scale = player.transform.get_scale() + var big_scale = player.transform.get_scale() * GrowUpFactor + var sprite = player.get_node("Sprite") + var coll = player.get_node("CollisionShape2D") + + while elapsed < GrowUpTime: + player.MAX_SPEED = lerp(fast_speed, slow_speed, elapsed / GrowUpTime) + player.ACCELERATION = lerp(fast_acc, slow_acc, elapsed / GrowUpTime) + setScale(sprite, coll, lerp(small_scale, big_scale, elapsed / GrowUpTime)) + elapsed += yield() + + elapsed -= GrowUpTime; + while elapsed < IsBigTime: + elapsed += yield() + elapsed -= IsBigTime; + + while elapsed < GrowDownTime: + player.MAX_SPEED = lerp(slow_speed, fast_speed, elapsed / GrowDownTime) + player.ACCELERATION = lerp(slow_acc, fast_acc, elapsed / GrowDownTime) + setScale(sprite, coll, lerp(big_scale, small_scale, elapsed / GrowDownTime)) + elapsed += yield() + +func setScale(sprite, coll, scale): + sprite.scale = scale; + coll.scale = scale; + +func StartEffect(player): + var rout = GiantRoutine(player, 0) + return rout + diff --git a/Scripts/Player.gd b/Scripts/Player.gd index e42847d..71238cf 100644 --- a/Scripts/Player.gd +++ b/Scripts/Player.gd @@ -1,9 +1,9 @@ extends KinematicBody2D -const MAX_SPEED = 200 -const ACCELERATION = 1000 -const FRICTION = 1000 -const MAX_LIFE = 30 +var MAX_SPEED = 200 +var ACCELERATION = 1000 +var FRICTION = 1000 +var MAX_LIFE = 30 var vel = Vector2.ZERO var curLife = MAX_LIFE