44 lines
1,010 B
GDScript
44 lines
1,010 B
GDScript
extends Area2D
|
|
|
|
@export var speed : float = 80.0
|
|
@export var damage : int = 1
|
|
@export var audio_pool := []
|
|
|
|
@export_flags_2d_physics var map_collision_layer : int
|
|
@export_flags_2d_physics var bunny_collision_layer : int
|
|
|
|
var dir : float
|
|
|
|
func _ready():
|
|
get_node(audio_pool[randi_range(0, 2)]).play()
|
|
pass
|
|
|
|
func _process(delta):
|
|
self.translate(Vector2(cos(dir), sin(dir)) * speed * delta)
|
|
self.rotate(delta * 30)
|
|
pass
|
|
|
|
func _on_collision(body):
|
|
var collided_layer = null;
|
|
|
|
if body.get_class() == "TileMap":
|
|
collided_layer = body.tile_set.get_physics_layer_collision_layer(0)
|
|
if(body.has_method("get_collision_layer")):
|
|
collided_layer = body.get_collision_layer()
|
|
|
|
if collided_layer & map_collision_layer:
|
|
queue_free()
|
|
pass
|
|
|
|
|
|
func _on_area_entered(area):
|
|
var collided_layer = null;
|
|
|
|
if(area.has_method("get_collision_layer")):
|
|
collided_layer = area.get_collision_layer()
|
|
|
|
if collided_layer & bunny_collision_layer:
|
|
var bunny = area as Bunny
|
|
bunny.damage(damage)
|
|
queue_free()
|
|
pass
|