forked from team-sg/hero-mark-2
killing is a messy business
This commit is contained in:
parent
19465f37ca
commit
a40347a52f
6 changed files with 39 additions and 1 deletions
|
@ -2,6 +2,7 @@ extends Area2D
|
||||||
|
|
||||||
|
|
||||||
const BloodStain := preload("res://objects/environment/blood/blood_stain.tscn")
|
const BloodStain := preload("res://objects/environment/blood/blood_stain.tscn")
|
||||||
|
const PlayerStain := preload("res://objects/player/player_stain.tscn")
|
||||||
|
|
||||||
|
|
||||||
export var color: Color = Color(0xf53342ff)
|
export var color: Color = Color(0xf53342ff)
|
||||||
|
@ -32,3 +33,9 @@ func _on_body_entered(body: Node) -> void:
|
||||||
queue_free()
|
queue_free()
|
||||||
elif body is TileMap:
|
elif body is TileMap:
|
||||||
queue_free()
|
queue_free()
|
||||||
|
elif body.is_in_group("player"):
|
||||||
|
var stain = PlayerStain.instance()
|
||||||
|
stain.color = color
|
||||||
|
body.get_node("Graphics/Sprite").add_child(stain)
|
||||||
|
stain.global_position = global_position
|
||||||
|
queue_free()
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
radius = 0.5
|
radius = 0.5
|
||||||
|
|
||||||
[node name="BloodSpray" type="Area2D"]
|
[node name="BloodSpray" type="Area2D"]
|
||||||
|
collision_mask = 129
|
||||||
script = ExtResource( 3 )
|
script = ExtResource( 3 )
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite" parent="."]
|
[node name="Sprite" type="Sprite" parent="."]
|
||||||
|
|
|
@ -1024,6 +1024,7 @@ double_jump_force = 124.0
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite" parent="Graphics"]
|
[node name="Sprite" type="Sprite" parent="Graphics"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
light_mask = 5
|
||||||
material = SubResource( 1 )
|
material = SubResource( 1 )
|
||||||
position = Vector2( 0, -10 )
|
position = Vector2( 0, -10 )
|
||||||
texture = ExtResource( 4 )
|
texture = ExtResource( 4 )
|
||||||
|
|
16
objects/player/player_stain.gd
Normal file
16
objects/player/player_stain.gd
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
extends Light2D
|
||||||
|
|
||||||
|
|
||||||
|
export var lifetime: float = 5.0
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
rotation = randf() * TAU
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
lifetime -= delta
|
||||||
|
if lifetime < 0.5:
|
||||||
|
scale = Vector2(lifetime * 2.0, lifetime * 2.0)
|
||||||
|
if lifetime <= 0.0:
|
||||||
|
queue_free()
|
10
objects/player/player_stain.tscn
Normal file
10
objects/player/player_stain.tscn
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[gd_scene load_steps=3 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=1]
|
||||||
|
[ext_resource path="res://objects/player/player_stain.gd" type="Script" id=2]
|
||||||
|
|
||||||
|
[node name="PlayerStain" type="Light2D"]
|
||||||
|
texture = ExtResource( 1 )
|
||||||
|
mode = 2
|
||||||
|
range_item_cull_mask = 4
|
||||||
|
script = ExtResource( 2 )
|
|
@ -23,7 +23,10 @@ bool is_border(sampler2D tex, vec2 uv, vec2 pixel_size) {
|
||||||
void fragment() {
|
void fragment() {
|
||||||
vec4 color = texture(TEXTURE, UV);
|
vec4 color = texture(TEXTURE, UV);
|
||||||
|
|
||||||
if (color.a == 0.0 && is_border(TEXTURE, UV, TEXTURE_PIXEL_SIZE)) {
|
// fucked up lighting change to make blood work perfectly
|
||||||
|
if (AT_LIGHT_PASS) {
|
||||||
|
COLOR = vec4(1.0, 1.0, 1.0, color.a);
|
||||||
|
} else if (color.a == 0.0 && is_border(TEXTURE, UV, TEXTURE_PIXEL_SIZE)) {
|
||||||
COLOR = border_color;
|
COLOR = border_color;
|
||||||
} else {
|
} else {
|
||||||
COLOR = texture(palette, color.rg );
|
COLOR = texture(palette, color.rg );
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue