Compare commits
2 Commits
a490eb3d05
...
d4973ef920
Author | SHA1 | Date |
---|---|---|
Luna Brovchuk | d4973ef920 | |
Luna Brovchuk | 096acaed54 |
|
@ -1,5 +1,7 @@
|
||||||
extends KinematicBody2D
|
extends KinematicBody2D
|
||||||
|
|
||||||
|
var explosion_preload = preload("res://src/models/explosion/Explosion.tscn")
|
||||||
|
var explode = false
|
||||||
var velocity = Vector2.ZERO
|
var velocity = Vector2.ZERO
|
||||||
var speed = 128
|
var speed = 128
|
||||||
var poison_damage = 0
|
var poison_damage = 0
|
||||||
|
@ -12,6 +14,7 @@ var prev_target
|
||||||
var target
|
var target
|
||||||
var explosive_damage = 0
|
var explosive_damage = 0
|
||||||
var speed_modifier = 1
|
var speed_modifier = 1
|
||||||
|
var target_center
|
||||||
|
|
||||||
func choose_target():
|
func choose_target():
|
||||||
target = null
|
target = null
|
||||||
|
@ -20,6 +23,7 @@ func choose_target():
|
||||||
var enemies = get_tree().get_nodes_in_group("enemy")
|
var enemies = get_tree().get_nodes_in_group("enemy")
|
||||||
for enemy in enemies:
|
for enemy in enemies:
|
||||||
enemy.material = null
|
enemy.material = null
|
||||||
|
if enemy.global_position.y < 20 or enemy.global_position.x < 20 or enemy.global_position.x > 300 or enemy.global_position.y > 120: continue
|
||||||
enemy_dist = global_position.distance_to(enemy.global_position)
|
enemy_dist = global_position.distance_to(enemy.global_position)
|
||||||
if enemy_dist < least_dist and enemy != prev_target:
|
if enemy_dist < least_dist and enemy != prev_target:
|
||||||
least_dist = enemy_dist
|
least_dist = enemy_dist
|
||||||
|
@ -29,7 +33,7 @@ func _physics_process(delta):
|
||||||
if target != null and is_instance_valid(target) and not target.dead:
|
if target != null and is_instance_valid(target) and not target.dead:
|
||||||
var target_texture = target.get_node("Sprite").frames.get_frame("idle", 0)
|
var target_texture = target.get_node("Sprite").frames.get_frame("idle", 0)
|
||||||
var target_sprite_size = Vector2(target_texture.get_width(), target_texture.get_width())
|
var target_sprite_size = Vector2(target_texture.get_width(), target_texture.get_width())
|
||||||
var target_center = target.global_position + (target_sprite_size / 2)
|
target_center = target.global_position + (target_sprite_size / 2)
|
||||||
if target.is_in_group("rat"):
|
if target.is_in_group("rat"):
|
||||||
target_center = target.global_position + Vector2(0, 2)
|
target_center = target.global_position + Vector2(0, 2)
|
||||||
self.global_position = self.global_position.move_toward(target_center, delta * speed * speed_modifier)
|
self.global_position = self.global_position.move_toward(target_center, delta * speed * speed_modifier)
|
||||||
|
@ -45,6 +49,11 @@ func area_entered(area):
|
||||||
parent.frozen_timer = 0
|
parent.frozen_timer = 0
|
||||||
parent.poison_damage = poison_damage
|
parent.poison_damage = poison_damage
|
||||||
parent.poisoned_timer = 0
|
parent.poisoned_timer = 0
|
||||||
|
if not explode and explosive_damage != 0:
|
||||||
|
explode = true
|
||||||
|
var explosion = explosion_preload.instance()
|
||||||
|
explosion.global_position = target_center + Vector2(0, -16)
|
||||||
|
get_parent().add_child(explosion)
|
||||||
if bounced >= ricochet_count:
|
if bounced >= ricochet_count:
|
||||||
call_deferred("free")
|
call_deferred("free")
|
||||||
choose_target()
|
choose_target()
|
||||||
|
|
|
@ -22,7 +22,7 @@ script = ExtResource( 2 )
|
||||||
use_parent_material = true
|
use_parent_material = true
|
||||||
frames = ExtResource( 1 )
|
frames = ExtResource( 1 )
|
||||||
animation = "idle"
|
animation = "idle"
|
||||||
frame = 3
|
frame = 2
|
||||||
playing = true
|
playing = true
|
||||||
centered = false
|
centered = false
|
||||||
|
|
||||||
|
|
|
@ -11,24 +11,28 @@ var shot = false
|
||||||
var sonic_wave
|
var sonic_wave
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
randomize()
|
||||||
|
self.global_position.x = ([-1, 1][randi()%2] * 320) + randi()%40 + 20
|
||||||
|
self.global_position.y = ([-1, 1][randi()%2] * 180) + randi()%40 + 20
|
||||||
hp = 7
|
hp = 7
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
if Global.playing:
|
if not (global_position.y < 20 or global_position.x < 20 or global_position.x > 300 or global_position.y > 120):
|
||||||
if not shooting:
|
if Global.playing:
|
||||||
shooting_timer += delta
|
if not shooting:
|
||||||
if shooting_timer >= 2.0:
|
shooting_timer += delta
|
||||||
shooting = true
|
if shooting_timer >= 2.0:
|
||||||
shooting_timer = .0
|
shooting = true
|
||||||
if shooting:
|
shooting_timer = .0
|
||||||
attack_timer += delta
|
if shooting:
|
||||||
if attack_timer >= .5 and not shot:
|
attack_timer += delta
|
||||||
_shoot()
|
if attack_timer >= .5 and not shot:
|
||||||
shot = true
|
_shoot()
|
||||||
if attack_timer >= 1.0:
|
shot = true
|
||||||
attack_timer = 0
|
if attack_timer >= 1.0:
|
||||||
shooting = false
|
attack_timer = 0
|
||||||
shot = false
|
shooting = false
|
||||||
|
shot = false
|
||||||
|
|
||||||
var player_position = player.global_position + Vector2(12, 12)
|
var player_position = player.global_position + Vector2(12, 12)
|
||||||
var angle = get_angle_to(player_position)
|
var angle = get_angle_to(player_position)
|
||||||
|
|
|
@ -7,6 +7,8 @@ var dash_timer = .0
|
||||||
var dashing = false
|
var dashing = false
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
self.global_position.x = ([-1, 1][randi()%2] * 320) + randi()%120 + 50
|
||||||
|
self.global_position.y = ([-1, 1][randi()%2] * 180) + randi()%40 + 20
|
||||||
hp = 8
|
hp = 8
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
[gd_scene load_steps=9 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://src/models/explosion/explosion.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://src/models/explosion/sprites/4.png" type="Texture" id=2]
|
||||||
|
[ext_resource path="res://src/models/explosion/sprites/3.png" type="Texture" id=3]
|
||||||
|
[ext_resource path="res://src/models/explosion/sprites/2.png" type="Texture" id=4]
|
||||||
|
[ext_resource path="res://src/models/explosion/sprites/1.png" type="Texture" id=5]
|
||||||
|
[ext_resource path="res://src/models/explosion/sprites/0.png" type="Texture" id=6]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape2D" id=1]
|
||||||
|
radius = 16.0
|
||||||
|
height = 10.0
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id=2]
|
||||||
|
animations = [ {
|
||||||
|
"frames": [ ExtResource( 6 ), ExtResource( 5 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 2 ) ],
|
||||||
|
"loop": true,
|
||||||
|
"name": "default",
|
||||||
|
"speed": 10.0
|
||||||
|
} ]
|
||||||
|
|
||||||
|
[node name="Explosion" type="StaticBody2D"]
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="Area2D" type="Area2D" parent="."]
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||||
|
rotation = 1.5708
|
||||||
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
|
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
|
||||||
|
frames = SubResource( 2 )
|
||||||
|
playing = true
|
||||||
|
|
||||||
|
[connection signal="animation_finished" from="AnimatedSprite" to="." method="animation_finished"]
|
|
@ -0,0 +1,13 @@
|
||||||
|
extends StaticBody2D
|
||||||
|
|
||||||
|
var damage = 10
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
var areas = $Area2D.get_overlapping_areas()
|
||||||
|
for area in areas:
|
||||||
|
var parent = area.get_parent()
|
||||||
|
if parent.is_in_group("enemy"):
|
||||||
|
parent.deal_damage(damage)
|
||||||
|
|
||||||
|
func animation_finished():
|
||||||
|
call_deferred("free")
|
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/0.png-d73025098797765d024006d9d769fa4e.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://src/models/explosion/sprites/0.png"
|
||||||
|
dest_files=[ "res://.import/0.png-d73025098797765d024006d9d769fa4e.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/1.png-6c970d4aadcef0ae8ef956266e565aed.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://src/models/explosion/sprites/1.png"
|
||||||
|
dest_files=[ "res://.import/1.png-6c970d4aadcef0ae8ef956266e565aed.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/2.png-41242ab1d12bd2382159018fca8a7c9f.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://src/models/explosion/sprites/2.png"
|
||||||
|
dest_files=[ "res://.import/2.png-41242ab1d12bd2382159018fca8a7c9f.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/3.png-5688b816e8f3e17c802b934c1cd11fac.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://src/models/explosion/sprites/3.png"
|
||||||
|
dest_files=[ "res://.import/3.png-5688b816e8f3e17c802b934c1cd11fac.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/4.png-5590e0566be025759130a2112c402cbe.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://src/models/explosion/sprites/4.png"
|
||||||
|
dest_files=[ "res://.import/4.png-5590e0566be025759130a2112c402cbe.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
|
@ -54,6 +54,7 @@ func choose_target():
|
||||||
var enemies = get_tree().get_nodes_in_group("enemy")
|
var enemies = get_tree().get_nodes_in_group("enemy")
|
||||||
for enemy in enemies:
|
for enemy in enemies:
|
||||||
enemy.material = null
|
enemy.material = null
|
||||||
|
if enemy.global_position.y < 20 or enemy.global_position.x < 20 or enemy.global_position.x > 300 or enemy.global_position.y > 120: continue
|
||||||
enemy_dist = global_position.distance_to(enemy.global_position)
|
enemy_dist = global_position.distance_to(enemy.global_position)
|
||||||
if enemy_dist < least_dist:
|
if enemy_dist < least_dist:
|
||||||
least_dist = enemy_dist
|
least_dist = enemy_dist
|
||||||
|
|
Loading…
Reference in New Issue