giants-godot/entities/genericprojectile.gd

51 lines
1.1 KiB
GDScript3
Raw Normal View History

2021-09-08 18:36:41 +02:00
extends Entity
class_name GenericProjectile
2021-09-22 18:04:03 +02:00
export var BULLET_SPEED: float = 1
export var BULLET_DAMAGE: float = 15
2021-09-08 18:36:41 +02:00
2021-09-22 18:04:03 +02:00
export var LIFETIME: float = 0
2021-09-08 18:36:41 +02:00
var _timer = 0
2021-09-22 18:04:03 +02:00
func _init():
gravity_scale = 0
enum WeaponProperties {
HOMING = 0x00000001,
BOUNCE = 0x00000002,
PROXIMITY = 0x00000004,
AREA_HURT = 0x00000008,
TRIGGER_OBJECT = 0x00000010,
TRIGGER_GROUND = 0x00000020,
TRIGGER_TIMEOUT = 0x00000040,
EXPLODE = 0x00000080,
DO_ORIENTATION = 0x00000100,
COLLIDE_GROUND = 0x00000200,
GROUND_RIPPLE = 0x00000400,
DEFLECTABLE = 0x00000800,
SHOOTABLE = 0x00001000,
FIRST_FIRE_DELAY = 0x00002000,
FLARE = 0x00004000,
INCENDIARY = 0x00008000,
EMP = 0x00010000,
}
2021-09-08 18:36:41 +02:00
var from: Transform
var to: Vector3 = Vector3.ZERO
2021-09-22 18:04:03 +02:00
export(int, FLAGS) var properties
2021-09-08 18:36:41 +02:00
func _physics_process(delta):
if LIFETIME != 0:
_timer += delta
if _timer >= LIFETIME:
queue_free()
func create(_from: Transform, _to: Vector3, exclude_collisions: Array):
from = _from
to = _to
global_transform = from
for object in exclude_collisions:
add_collision_exception_with(object)
add_central_force((to - from.origin).normalized() * BULLET_SPEED)