generated from krampus/template-godot4
Different tools do different damage to nodules
This commit is contained in:
parent
7018ffff34
commit
34b4ad7da2
@ -2,6 +2,7 @@ class_name PointSpray extends Spray
|
|||||||
## Simple single-point spraygun
|
## Simple single-point spraygun
|
||||||
|
|
||||||
@export var spray_scale := 1.5
|
@export var spray_scale := 1.5
|
||||||
|
@export var damage := 0.3334
|
||||||
|
|
||||||
@onready var laser: LaserCast = %LaserCast
|
@onready var laser: LaserCast = %LaserCast
|
||||||
|
|
||||||
@ -16,4 +17,4 @@ func _spray() -> void:
|
|||||||
point, laser.get_collision_normal(), point_scale
|
point, laser.get_collision_normal(), point_scale
|
||||||
)
|
)
|
||||||
if collider is GunkNode:
|
if collider is GunkNode:
|
||||||
(collider as GunkNode).hit()
|
(collider as GunkNode).hit(damage)
|
||||||
|
@ -4,6 +4,8 @@ extends Tool
|
|||||||
const PAINT_COLOR := Color(1, 0, 0, 0.3)
|
const PAINT_COLOR := Color(1, 0, 0, 0.3)
|
||||||
const BRUSH_SCALE := 0.2
|
const BRUSH_SCALE := 0.2
|
||||||
|
|
||||||
|
@export var damage := 0.0063 # ~8 seconds to destroy standard nodule
|
||||||
|
|
||||||
@onready var raycast: RayCast3D = %Raycast
|
@onready var raycast: RayCast3D = %Raycast
|
||||||
|
|
||||||
@onready var texture_idle: TextureRect = %TextureIdle
|
@onready var texture_idle: TextureRect = %TextureIdle
|
||||||
@ -23,7 +25,7 @@ func _fire() -> void:
|
|||||||
PAINT_COLOR
|
PAINT_COLOR
|
||||||
)
|
)
|
||||||
if collider is GunkNode:
|
if collider is GunkNode:
|
||||||
(collider as GunkNode).hit()
|
(collider as GunkNode).hit(damage)
|
||||||
else:
|
else:
|
||||||
brush_animation.stop()
|
brush_animation.stop()
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@ class_name WideSpray extends Spray
|
|||||||
const SPRAYCAST_GROUP := "SprayCast"
|
const SPRAYCAST_GROUP := "SprayCast"
|
||||||
|
|
||||||
@export var spray_scale := 1.0
|
@export var spray_scale := 1.0
|
||||||
|
# NOTE: this is damage _per spray_, so multiply by up to 7 damage per frame depending on spread.
|
||||||
|
@export var damage := 0.015
|
||||||
|
|
||||||
var _horizontal := true
|
var _horizontal := true
|
||||||
var _busy := false
|
var _busy := false
|
||||||
@ -56,7 +58,7 @@ func _spray() -> void:
|
|||||||
prev_point = point
|
prev_point = point
|
||||||
prev_normal = normal
|
prev_normal = normal
|
||||||
elif collider is GunkNode:
|
elif collider is GunkNode:
|
||||||
(collider as GunkNode).hit()
|
(collider as GunkNode).hit(damage)
|
||||||
|
|
||||||
|
|
||||||
func _on_animation_finished(anim_name: StringName) -> void:
|
func _on_animation_finished(anim_name: StringName) -> void:
|
||||||
|
@ -8,7 +8,8 @@ extends GunkNode
|
|||||||
@onready var mesh_instance: MeshInstance3D = %MeshInstance3D
|
@onready var mesh_instance: MeshInstance3D = %MeshInstance3D
|
||||||
|
|
||||||
|
|
||||||
func _process(_delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
|
super._process(delta)
|
||||||
var shader: ShaderMaterial = mesh_instance.mesh.surface_get_material(0)
|
var shader: ShaderMaterial = mesh_instance.mesh.surface_get_material(0)
|
||||||
var value := _sustained_damage / durability
|
var value := _sustained_damage / durability
|
||||||
shader.set_shader_parameter("jitter_time_scale", value * jitter_scale_factor)
|
shader.set_shader_parameter("jitter_time_scale", value * jitter_scale_factor)
|
||||||
|
@ -5,7 +5,7 @@ class_name GunkNode extends StaticBody3D
|
|||||||
## but before it's removed from the scene tree
|
## but before it's removed from the scene tree
|
||||||
signal destroyed
|
signal destroyed
|
||||||
|
|
||||||
const JITTER_FADE_RATE := 0.6
|
const JITTER_FADE_RATE := 0.8
|
||||||
|
|
||||||
## Time in seconds the player must hit this node with a sustained beam before it's destroyed.
|
## Time in seconds the player must hit this node with a sustained beam before it's destroyed.
|
||||||
@export var durability := 1.0
|
@export var durability := 1.0
|
||||||
@ -20,7 +20,8 @@ var _hit_this_frame := false
|
|||||||
## Called each frame this node takes a hit.
|
## Called each frame this node takes a hit.
|
||||||
##
|
##
|
||||||
## Derived types should override `_hit()` as a lifecycle method.
|
## Derived types should override `_hit()` as a lifecycle method.
|
||||||
func hit() -> void:
|
func hit(damage: float = 0.05) -> void:
|
||||||
|
_sustained_damage += damage
|
||||||
_hit_this_frame = true
|
_hit_this_frame = true
|
||||||
_hit()
|
_hit()
|
||||||
|
|
||||||
@ -29,10 +30,8 @@ func _hit() -> void:
|
|||||||
pass # Implemented in derived type
|
pass # Implemented in derived type
|
||||||
|
|
||||||
|
|
||||||
func _physics_process(delta: float) -> void:
|
func _process(_delta: float) -> void:
|
||||||
if _hit_this_frame:
|
if not _hit_this_frame:
|
||||||
_sustained_damage += delta
|
|
||||||
else:
|
|
||||||
_sustained_damage *= JITTER_FADE_RATE
|
_sustained_damage *= JITTER_FADE_RATE
|
||||||
_hit_this_frame = false
|
_hit_this_frame = false
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user