bloodstain improvements. work during pause for player, vastly more efficient

This commit is contained in:
Haze Weathers 2023-09-15 22:16:24 -04:00
parent 686b57f798
commit 6f6c5d06e1
9 changed files with 59 additions and 18 deletions

View file

@ -10,7 +10,7 @@ export var spray_velocity: float = 80
func _ready() -> void:
for i in spray_ammount:
var spray: RigidBody2D = BloodSpray.instance()
var spray = BloodSpray.instance()
spray.global_position = global_position
spray.linear_velocity = Vector2(spray_velocity, 0.0).rotated(randf() * TAU)
spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * TAU)
get_parent().add_child(spray)

View file

@ -1,4 +1,4 @@
extends RigidBody2D
extends Area2D
const BloodStain := preload("res://objects/environment/blood/blood_stain.tscn")
@ -7,6 +7,9 @@ const BloodStain := preload("res://objects/environment/blood/blood_stain.tscn")
export var color: Color = Color(0xf53342ff)
var velocity := Vector2.ZERO
onready var sprite: Sprite = $Sprite
@ -15,15 +18,17 @@ func _ready() -> void:
func _physics_process(delta: float) -> void:
sprite.global_rotation = linear_velocity.angle()
velocity.y += 98.0 * delta
position += velocity * delta
sprite.global_rotation = velocity.angle()
func _on_body_entered(body: Node) -> void:
if body.is_in_group("can_stain"):
var stain = BloodStain.instance()
stain.color = color
stain.modulate = color
stain.global_position = global_position
body.add_child(stain)
StainLayer.add_stain(stain)
queue_free()
elif body is TileMap:
queue_free()

View file

@ -4,11 +4,9 @@
[ext_resource path="res://objects/environment/blood/blood_spray.gd" type="Script" id=3]
[sub_resource type="CircleShape2D" id=1]
radius = 1.0
radius = 0.5
[node name="BloodSpray" type="RigidBody2D"]
contacts_reported = 4
contact_monitor = true
[node name="BloodSpray" type="Area2D"]
script = ExtResource( 3 )
[node name="Sprite" type="Sprite" parent="."]

View file

@ -1,4 +1,4 @@
extends Light2D
extends Sprite
func _ready() -> void:

View file

@ -3,10 +3,7 @@
[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=1]
[ext_resource path="res://objects/environment/blood/blood_stain.gd" type="Script" id=2]
[node name="BloodStain" type="Light2D"]
[node name="BloodStain" type="Sprite"]
light_mask = 3
texture = ExtResource( 1 )
color = Color( 0.960784, 0.2, 0.258824, 1 )
mode = 2
range_item_cull_mask = 2
script = ExtResource( 2 )

View file

@ -277,9 +277,11 @@ func _on_Dead_state_entered() -> void:
particles.emitting = true
get_parent().add_child(particles)
for i in 16:
var spray: RigidBody2D = BloodSpray.instance()
spray.global_position = global_position
spray.linear_velocity = Vector2(80.0, 0.0).rotated(randf() * TAU)
var spray = BloodSpray.instance()
spray.pause_mode = PAUSE_MODE_PROCESS
Physics2DServer.set_active(true)
spray.global_position = death_splatter_position.global_position
spray.velocity = Vector2(randf() * 80.0, 0.0).rotated(randf() * TAU)
get_parent().add_child(spray)
else:
skip_blood = false