blob: 2eeb14edf8cf596408d5fdd2a9a1cf9834bc5423 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
extends KinematicBody2D
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
var Explosion = preload("res://Explosion.tscn")
# Called when the node enters the scene tree for the first time.
func _ready():
$AnimatedSprite.play()
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
func _on_Timer_timeout():
print("BYE BOMB")
$CollisionShape2D.disabled = true
var space_state = get_world_2d().direct_space_state
var base_position = self.position
var power = 5
var directions = [
Vector2.UP,
Vector2.RIGHT,
Vector2.DOWN,
Vector2.LEFT,
]
for j in range(directions.size()):
for i in range(power):
var direction = directions[j]
if direction.length() == 0:
continue
var from = base_position + (direction * i * 16)
var to = base_position + (direction * (i + 1) * 16)
var result = space_state.intersect_ray(from, to)
if result and result.collider:
if "Bomb" in result.collider.name:
result.collider._on_Timer_timeout()
break
# don't add explosion when Damageable?
#continue
# break when hitting wall
#break
pass
var explosion = Explosion.instance()
explosion.position = to
get_tree().get_current_scene().add_child(explosion)
var explosion = Explosion.instance()
explosion.position = base_position
get_tree().get_current_scene().add_child(explosion)
queue_free()
func _on_Area2D_body_exited(body):
if body.name == "Player":
self.set_collision_layer_bit(0, true)
|