2025-09-02 19:49:40 +02:00
|
|
|
extends Resource
|
|
|
|
|
class_name ProjectileResource
|
|
|
|
|
|
2025-09-14 01:31:18 +02:00
|
|
|
const projectileScene : PackedScene = preload("res://Towers/Projectiles/projectile.tscn")
|
2025-09-02 19:49:40 +02:00
|
|
|
|
|
|
|
|
@export var speed : int = 20
|
|
|
|
|
@export var damage : int = 1
|
2025-09-03 00:03:15 +02:00
|
|
|
@export var maxTargets : int = 1 ## Usefull when [enum Projectile.TYPE] is [param PIERCING] or [param BOUNCING]
|
2025-09-02 19:49:40 +02:00
|
|
|
@export var type : Projectile.TYPE = Projectile.TYPE.BASIC
|
|
|
|
|
@export_flags("Enemies", "Alliés") var allowedTargets : int = 1
|
2025-09-03 00:03:15 +02:00
|
|
|
## Usefull when [enum Projectile.TYPE] is [param AOE], [param PIERCING] or [param BOUNCING]
|
|
|
|
|
## When [enum Projectile.TYPE] is [param BOUNCING] the shape is for target new entity in range
|
|
|
|
|
@export var damageArea : Shape3D
|
2025-09-02 19:49:40 +02:00
|
|
|
@export var sprite : Texture2D = load("res://Assets/Emotes/emote_star.png")
|
2025-09-14 01:31:18 +02:00
|
|
|
|
|
|
|
|
func shoot(target: Node3D, gobalPos: Vector3) -> void:
|
|
|
|
|
var projectile : Projectile = projectileScene.instantiate()
|
|
|
|
|
projectile.loadProjectile(self, target)
|
|
|
|
|
EventBus.projectile_shooted.emit(projectile, gobalPos)
|