Death animation
This commit is contained in:
54
Zennysoft.Game.Ma/src/player/InvertColors.gdshader
Normal file
54
Zennysoft.Game.Ma/src/player/InvertColors.gdshader
Normal file
@@ -0,0 +1,54 @@
|
||||
shader_type spatial;
|
||||
render_mode unshaded, fog_disabled;
|
||||
|
||||
uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap;
|
||||
|
||||
|
||||
uniform vec3 colorCount = vec3(32); //Max HSV Count
|
||||
uniform vec3 colorShift = vec3(1.0); //Shift HSV colors
|
||||
|
||||
uniform bool doShiftFirst = false; // do shifting colors first or flooring colors
|
||||
uniform bool includeAlpha = true; // Include alpha objects. if certain objects that have alpha aren`t rendering disabling might help
|
||||
|
||||
vec3 hsv_to_rgb(vec3 color) {
|
||||
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||
vec3 p = abs(fract(color.xxx + K.xyz) * 6.0 - K.www);
|
||||
return color.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), color.y);
|
||||
}
|
||||
|
||||
vec3 rgb_to_hsv(vec3 color) {
|
||||
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||
vec4 p = mix(vec4(color.bg, K.wz), vec4(color.gb, K.xy), step(color.b, color.g));
|
||||
vec4 q = mix(vec4(p.xyw, color.r), vec4(color.r, p.yzx), step(p.x, color.r));
|
||||
float d = q.x - min(q.w, q.y);
|
||||
float e = 1.0e-10;
|
||||
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||
}
|
||||
|
||||
void vertex()
|
||||
{
|
||||
POSITION = vec4(VERTEX.xy, 1.0, 1.0);
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
vec4 tex = texture(SCREEN_TEXTURE, vec2(UV.x, -UV.y));
|
||||
vec3 hvs = rgb_to_hsv(tex.xyz);
|
||||
|
||||
if (doShiftFirst){
|
||||
hvs.xyz = (hvs * colorShift);
|
||||
}
|
||||
|
||||
hvs.x = floor(hvs.x * colorCount.x) / colorCount.x;
|
||||
hvs.y = floor(hvs.y * colorCount.y) / colorCount.y;
|
||||
hvs.z = floor(hvs.z * colorCount.z) / colorCount.z;
|
||||
|
||||
if (!doShiftFirst){
|
||||
hvs.xyz = (hvs * colorShift);
|
||||
}
|
||||
|
||||
ALBEDO = hsv_to_rgb(hvs.xyz);
|
||||
|
||||
if (!includeAlpha){
|
||||
ALPHA = tex.w;
|
||||
}
|
||||
}
|
||||
1
Zennysoft.Game.Ma/src/player/InvertColors.gdshader.uid
Normal file
1
Zennysoft.Game.Ma/src/player/InvertColors.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dfk3eps71yyyl
|
||||
@@ -74,6 +74,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
#region Node Dependencies
|
||||
[Node] private IAnimationPlayer AnimationPlayer { get; set; } = default!;
|
||||
|
||||
[Node] private IAnimationPlayer PlayerFXAnimations { get; set; } = default!;
|
||||
|
||||
[Node] private Area3D Hitbox { get; set; } = default!;
|
||||
|
||||
[Node] private Area3D CollisionDetector { get; set; } = default!;
|
||||
@@ -83,6 +85,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
[Node] private RigidBody3D WallCheck { get; set; } = default!;
|
||||
|
||||
[Node] private AudioStreamPlayer3D WalkSFX { get; set; } = default!;
|
||||
|
||||
[Node] private CollisionShape3D MainCollision { get; set; } = default!;
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -164,6 +168,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
|
||||
public void Activate()
|
||||
{
|
||||
MainCollision.Disabled = false;
|
||||
SetProcessInput(true);
|
||||
SetPhysicsProcess(true);
|
||||
SetHealthTimerStatus(HealthTimerIsActive);
|
||||
@@ -171,6 +176,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
|
||||
public void Deactivate()
|
||||
{
|
||||
MainCollision.Disabled = true;
|
||||
SetProcessInput(false);
|
||||
SetPhysicsProcess(false);
|
||||
SetHealthTimerStatus(false);
|
||||
@@ -213,6 +219,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
|
||||
public void Die()
|
||||
{
|
||||
PlayerFXAnimations.Play("death");
|
||||
HealthTimer.WaitTime = _healthTimerWaitTime;
|
||||
HealthTimer.Timeout -= OnHealthTimerTimeout;
|
||||
SetProcessInput(false);
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
[gd_scene load_steps=55 format=3 uid="uid://cfecvvav8kkp6"]
|
||||
[gd_scene load_steps=59 format=3 uid="uid://cfecvvav8kkp6"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yxmiqy7i0t7r" path="res://src/player/Player.cs" id="1_xcol5"]
|
||||
[ext_resource type="AudioStream" uid="uid://cth2xgoqhdf0m" path="res://src/audio/sfx/player_hit_wall.ogg" id="3_565yv"]
|
||||
[ext_resource type="Texture2D" uid="uid://c4ps26w7h3vpq" path="res://src/minimap/textures/player_map_icon.png" id="4_3ojaj"]
|
||||
[ext_resource type="Shader" uid="uid://dfk3eps71yyyl" path="res://src/player/InvertColors.gdshader" id="4_v5qoq"]
|
||||
[ext_resource type="Texture2D" uid="uid://2ig1arptr1e8" path="res://src/vfx/Items Etc/slash_2.png" id="4_v7rlw"]
|
||||
[ext_resource type="Texture2D" uid="uid://qhxl3nejqlk1" path="res://src/vfx/World/DUST_1.png" id="5_v5qoq"]
|
||||
[ext_resource type="AudioStream" uid="uid://bsprdc3ka6am0" path="res://src/audio/sfx/player_steps_concrete.ogg" id="6_v7rlw"]
|
||||
@@ -11,6 +12,13 @@
|
||||
radius = 1.0
|
||||
height = 3.07596
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_jtmj1"]
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_v7rlw"]
|
||||
material = SubResource("ShaderMaterial_jtmj1")
|
||||
flip_faces = true
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_3ojaj"]
|
||||
resource_name = "IconAnimation"
|
||||
length = 2.5
|
||||
@@ -154,6 +162,66 @@ tracks/1/keys = {
|
||||
"update": 1,
|
||||
"values": [0]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("../Camera/Camera3D:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.003, 1.2, -0.01)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("../Camera/Camera3D/MeshInstance3D:mesh:material:shader")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [null]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("../Camera/Camera3D/MeshInstance3D:mesh:material:shader_parameter/colorCount")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(32, 32, 32)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("../Camera/Camera3D/MeshInstance3D:mesh:material:shader_parameter/includeAlpha")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("../Camera/Camera3D/MeshInstance3D:mesh:material:shader_parameter/colorShift")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(1, 1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ebyyx"]
|
||||
resource_name = "hit_wall"
|
||||
@@ -213,9 +281,74 @@ tracks/1/keys = {
|
||||
"values": [0, 30]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_es4xk"]
|
||||
resource_name = "death"
|
||||
length = 2.5
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../Camera/Camera3D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.003, 1.2, -0.01), Vector3(0.003, 0, -1)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../Camera/Camera3D/MeshInstance3D:mesh:material:shader")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(3.35872e-05),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [ExtResource("4_v5qoq")]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("../Camera/Camera3D/MeshInstance3D:mesh:material:shader_parameter/colorCount")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(-0.266666, 0, 0.0333338),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(640.06, 1, 640), Vector3(640, 640, 640), Vector3(640.06, 1, 640)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("../Camera/Camera3D/MeshInstance3D:mesh:material:shader_parameter/includeAlpha")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("../Camera/Camera3D/MeshInstance3D:mesh:material:shader_parameter/colorShift")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 2.5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(1, 1, 1), Vector3(1, 1, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ebyyx"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_jtmj1"),
|
||||
&"death": SubResource("Animation_es4xk"),
|
||||
&"hit_wall": SubResource("Animation_ebyyx"),
|
||||
&"normal_attack": SubResource("Animation_v5qoq")
|
||||
}
|
||||
@@ -492,7 +625,8 @@ collision_layer = 802
|
||||
collision_mask = 775
|
||||
script = ExtResource("1_xcol5")
|
||||
|
||||
[node name="PlayerGeometryCollision" type="CollisionShape3D" parent="."]
|
||||
[node name="MainCollision" type="CollisionShape3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-0.0242399, 0.00507889, 0.999693, 0.000123113, 0.999987, -0.00507739, -0.999706, 0, -0.0242402, 0, 1.06447, 0.00162865)
|
||||
shape = SubResource("CapsuleShape3D_dw45s")
|
||||
|
||||
@@ -511,6 +645,10 @@ fov = 52.0
|
||||
near = 0.01
|
||||
far = 9000.0
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Camera/Camera3D"]
|
||||
extra_cull_margin = 16384.0
|
||||
mesh = SubResource("QuadMesh_v7rlw")
|
||||
|
||||
[node name="player_model" type="Node3D" parent="Camera"]
|
||||
transform = Transform3D(-0.015, 0, -2.26494e-09, 0, 0.015, 0, 2.26494e-09, 0, -0.015, 0, -0.268445, -0.00941753)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user