From ca1b21e95e9629c445e08f60a3bd54ad21454e98 Mon Sep 17 00:00:00 2001 From: Hurlu Date: Sun, 5 Apr 2020 15:27:24 +0200 Subject: [PATCH] fast trail go fast --- Scene/FastTrail.tscn | 22 ++++++++++++++++++++++ Scene/Player.tscn | 1 + Scene/TestScene.tscn | 11 ++++++++++- Scripts/FastTrail.gd | 29 +++++++++++++++++++++++++++++ Scripts/Player.gd | 27 ++++++++++++++++++++++++++- 5 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 Scene/FastTrail.tscn create mode 100644 Scripts/FastTrail.gd diff --git a/Scene/FastTrail.tscn b/Scene/FastTrail.tscn new file mode 100644 index 0000000..45c7a28 --- /dev/null +++ b/Scene/FastTrail.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://Assets/BigPlaceholder.png" type="Texture" id=1] +[ext_resource path="res://Scripts/FastTrail.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 88.8117, 26.2111 ) + +[node name="FastTrail" type="Node2D"] +rotation = -6.28319 +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +modulate = Color( 0.901961, 0, 0, 1 ) +z_index = 10 +texture = ExtResource( 1 ) +offset = Vector2( 88, 0 ) + +[node name="Area2D" type="Area2D" parent="Sprite"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite/Area2D"] +shape = SubResource( 1 ) diff --git a/Scene/Player.tscn b/Scene/Player.tscn index cfd3bcd..b48be64 100644 --- a/Scene/Player.tscn +++ b/Scene/Player.tscn @@ -243,6 +243,7 @@ parameters/Idle/blend_position = Vector2( -1.1, 0.0314158 ) parameters/Run/blend_position = Vector2( -0.0925897, 0.517895 ) [node name="ConfusionStars" type="Node2D" parent="."] +scale = Vector2( 10, 10 ) [node name="Path2D" type="Path2D" parent="ConfusionStars"] position = Vector2( -19.4617, -21.2425 ) diff --git a/Scene/TestScene.tscn b/Scene/TestScene.tscn index 7392aee..a3220a6 100644 --- a/Scene/TestScene.tscn +++ b/Scene/TestScene.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://Scene/Player.tscn" type="PackedScene" id=1] +[ext_resource path="res://Scene/Clopinette.tscn" type="PackedScene" id=2] [ext_resource path="res://Scene/EndGameWindow.tscn" type="PackedScene" id=4] [ext_resource path="res://Scene/GameManager.tscn" type="PackedScene" id=5] [ext_resource path="res://Scene/HealthBar.tscn" type="PackedScene" id=6] @@ -52,3 +53,11 @@ position = Vector2( 1659.71, 594.146 ) "spawn_point", ]] position = Vector2( 340.904, 670.119 ) + +[node name="Clopinette" parent="." instance=ExtResource( 2 )] +position = Vector2( 265.689, 415.412 ) +scriptName = "res://Scripts/PaintEffects/Upscale.gd" + +[node name="Clopinette2" parent="." instance=ExtResource( 2 )] +position = Vector2( 259.961, 538.562 ) +scriptName = "res://Scripts/PaintEffects/Slippery.gd" diff --git a/Scripts/FastTrail.gd b/Scripts/FastTrail.gd new file mode 100644 index 0000000..7076b6b --- /dev/null +++ b/Scripts/FastTrail.gd @@ -0,0 +1,29 @@ +extends Node + +var fastFactor +var lifetime = 5 +var elapsed = 0 +var sprite + +func slow_player(victim): + if victim.is_in_group("Player"): + victim.MAX_SPEED *= fastFactor + victim.ACCELERATION *= fastFactor + +func unslow_player(victim): + if victim.is_in_group("Player"): + victim.MAX_SPEED /= fastFactor + victim.ACCELERATION /= fastFactor + +# Called when the node enters the scene tree for the first time. +func _ready(): + sprite = get_node("Sprite") + get_node("Sprite/Area2D").connect("body_entered", self, "slow_player") + get_node("Sprite/Area2D").connect("body_exited", self, "unslow_player") + +func _process(delta): + elapsed += delta + if elapsed >= lifetime * 0.7: + sprite.self_modulate = Color(1,1,1,lerp(1, 0, (elapsed - lifetime * 0.7) / (lifetime * 0.3))) + if elapsed >= lifetime: + queue_free() diff --git a/Scripts/Player.gd b/Scripts/Player.gd index 7c25dee..10b1812 100644 --- a/Scripts/Player.gd +++ b/Scripts/Player.gd @@ -7,10 +7,13 @@ var MAX_LIFE = 30 const PICKUP_BONUS = 5 export var rota_speed = 100 export var slow_cooldown = 5 +export var fast_cooldown = 5 var slow_trail = load("res://Scene/SlowPaint.tscn") +var fast_trail = load("res://Scene/FastPaint.tscn") var slow_cooldown_elapsed = 5 +var fast_cooldown_elapsed = 5 var follow1; var follow2; @@ -64,6 +67,24 @@ func launch_slow(): inst.position = self.position inst.slowFactor = 2 world.add_child(inst) + +func launch_fast(): + if fast_cooldown_elapsed < fast_cooldown: + return + fast_cooldown_elapsed = 0 + var world = get_parent() + var inst = load("res://Scene/FastTrail.tscn").instance() + var dir = get_dir() + if dir == Vector2.ZERO: + dir = (last_dir if last_dir != Vector2.ZERO else Vector2.DOWN) + var angle = acos(dir.dot(Vector2.RIGHT)) + var modifier = 0 + if dir.y < 0: + modifier += angle * -2 + inst.transform = inst.transform.rotated(angle + modifier) + inst.position = self.position + inst.fastFactor = 2 + world.add_child(inst) func _process(delta): follow1.set_offset(follow1.get_offset() + delta * rota_speed) @@ -72,6 +93,10 @@ func _process(delta): if (self.name == "Player1" && Input.get_action_strength("gameplay_slow") > 0) \ || (self.name == "Player2" && Input.get_action_strength("gameplay_slow2") > 0): launch_slow() + + if (self.name == "Player1" && Input.get_action_strength("gameplay_fast") > 0) \ + || (self.name == "Player2" && Input.get_action_strength("gameplay_fast2") > 0): + launch_fast() updatePaintEffects(delta) curLife -= delta @@ -94,7 +119,7 @@ func get_dir(): return input_vector func _physics_process(delta): - var input_vector = get_dir() + var input_vector = get_dir() if input_vector != Vector2.ZERO: last_dir = input_vector