bye bye prototype world
This commit is contained in:
parent
2cc3eaa859
commit
5b659d7b9c
9 changed files with 12 additions and 381 deletions
37
buildings/building.gd
Normal file
37
buildings/building.gd
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
class_name Building
|
||||
extends CollisionObject3D
|
||||
|
||||
@export var health := 10.
|
||||
|
||||
@export var shake_noise: FastNoiseLite
|
||||
var shake_duration := 0.
|
||||
@onready var initial_shaker_pos: Vector3 = %Shaker.position
|
||||
|
||||
func _ready() -> void:
|
||||
scale.y = randf_range(.5, 1.25)
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if shake_duration <= 0:
|
||||
%Shaker.position = initial_shaker_pos
|
||||
else:
|
||||
var x := shake_noise.get_noise_1d(shake_duration * 10000)
|
||||
var y := shake_noise.get_noise_1d(-shake_duration * 10000)
|
||||
%Shaker.position = initial_shaker_pos + (Vector3(x, 0, y) * 0.75)
|
||||
|
||||
shake_duration = move_toward(shake_duration, 0., delta)
|
||||
|
||||
func hit(_proj: PlayerProjectile, damage: float) -> bool:
|
||||
health -= damage
|
||||
if health <= 0.:
|
||||
print("boom!")
|
||||
SignalBus.building_destroyed.emit(self)
|
||||
collision_layer = 1 # World collision only
|
||||
|
||||
%Shaker.hide()
|
||||
%DestroyedMesh.show()
|
||||
%GPUParticles3D.preprocess = randf()
|
||||
else:
|
||||
shake_duration += 0.5
|
||||
|
||||
return true
|
||||
Loading…
Add table
Add a link
Reference in a new issue