generated from krampus/template-godot4
25 lines
633 B
GDScript3
25 lines
633 B
GDScript3
|
class_name PointSpray extends Spray
|
||
|
## Simple single-point spraygun
|
||
|
|
||
|
@export var spray_scale := 16.0
|
||
|
|
||
|
@onready var raycast: RayCast3D = %RayCast3D
|
||
|
@onready var spray_effect: MeshInstance3D = %SprayEffect
|
||
|
|
||
|
|
||
|
func fire() -> void:
|
||
|
if raycast.is_colliding():
|
||
|
var collider := raycast.get_collider()
|
||
|
if collider is GunkBody:
|
||
|
var point := raycast.get_collision_point()
|
||
|
var point_scale := sqrt(point.distance_to(global_position)) * spray_scale
|
||
|
(collider as GunkBody).paint_continuous(
|
||
|
point, raycast.get_collision_normal(), point_scale
|
||
|
)
|
||
|
|
||
|
spray_effect.visible = true
|
||
|
|
||
|
|
||
|
func idle() -> void:
|
||
|
spray_effect.visible = false
|