Know your enemy

This commit is contained in:
MarcEricMartel 2023-10-10 12:56:34 -04:00
parent 1e0ff0a91c
commit bf4cf75e66
4 changed files with 558 additions and 11 deletions

BIN
Assets/star.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

34
Assets/star.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dhvo0324eu5my"
path="res://.godot/imported/star.png-59a17f0ff6ffca9363606061d3940469.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/star.png"
dest_files=["res://.godot/imported/star.png-59a17f0ff6ffca9363606061d3940469.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -1,16 +1,445 @@
[gd_scene load_steps=3 format=3 uid="uid://b5lnjonlf4i1b"] [gd_scene load_steps=57 format=3 uid="uid://b5lnjonlf4i1b"]
[ext_resource type="Script" path="res://Scripts/Enemy.gd" id="1_xj62t"] [ext_resource type="Script" path="res://Scripts/Enemy.gd" id="1_xj62t"]
[ext_resource type="Texture2D" uid="uid://xn7yb3f5w17m" path="res://Assets/Knight/noBKG_KnightAttack_strip.png" id="2_dclcl"]
[ext_resource type="Texture2D" uid="uid://b3a5g03ukunfa" path="res://Assets/Knight/noBKG_KnightIdle_strip.png" id="2_k838c"]
[ext_resource type="Texture2D" uid="uid://feql3aiqdh1s" path="res://Assets/Knight/noBKG_KnightDeath_strip.png" id="3_iqd0b"]
[ext_resource type="Texture2D" uid="uid://bof6qeuo2rnso" path="res://Assets/Knight/noBKG_KnightRun_strip.png" id="4_saf4v"]
[ext_resource type="Texture2D" uid="uid://dhvo0324eu5my" path="res://Assets/star.png" id="6_53bg1"]
[sub_resource type="ImageTexture" id="ImageTexture_s1wwp"] [sub_resource type="AtlasTexture" id="AtlasTexture_6gjg8"]
atlas = ExtResource("2_dclcl")
region = Rect2(1296, 0, 144, 64)
[node name="Enemy" type="Node2D"] [sub_resource type="AtlasTexture" id="AtlasTexture_jdp10"]
atlas = ExtResource("2_dclcl")
region = Rect2(1440, 0, 144, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_k3naf"]
atlas = ExtResource("2_dclcl")
region = Rect2(1584, 0, 144, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_fp260"]
atlas = ExtResource("2_dclcl")
region = Rect2(1728, 0, 144, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_g751c"]
atlas = ExtResource("2_dclcl")
region = Rect2(2160, 0, 144, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_ul7we"]
atlas = ExtResource("2_dclcl")
region = Rect2(2304, 0, 144, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_7jbxd"]
atlas = ExtResource("2_dclcl")
region = Rect2(2448, 0, 144, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_1irrx"]
atlas = ExtResource("2_dclcl")
region = Rect2(2592, 0, 144, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_vp60f"]
atlas = ExtResource("3_iqd0b")
region = Rect2(0, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_eeh3q"]
atlas = ExtResource("3_iqd0b")
region = Rect2(96, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_qw6wi"]
atlas = ExtResource("3_iqd0b")
region = Rect2(192, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_51bx8"]
atlas = ExtResource("3_iqd0b")
region = Rect2(288, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_6ehno"]
atlas = ExtResource("3_iqd0b")
region = Rect2(384, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_uwm5y"]
atlas = ExtResource("3_iqd0b")
region = Rect2(480, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_8ofb2"]
atlas = ExtResource("3_iqd0b")
region = Rect2(576, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_hm4l8"]
atlas = ExtResource("3_iqd0b")
region = Rect2(672, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_vecpt"]
atlas = ExtResource("3_iqd0b")
region = Rect2(768, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_12lwm"]
atlas = ExtResource("3_iqd0b")
region = Rect2(864, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_0k70c"]
atlas = ExtResource("3_iqd0b")
region = Rect2(960, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_rwugn"]
atlas = ExtResource("3_iqd0b")
region = Rect2(1056, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_p7xuo"]
atlas = ExtResource("3_iqd0b")
region = Rect2(1152, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_33arc"]
atlas = ExtResource("3_iqd0b")
region = Rect2(1248, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_y20yo"]
atlas = ExtResource("3_iqd0b")
region = Rect2(1344, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_bd10d"]
atlas = ExtResource("2_k838c")
region = Rect2(0, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_lsar3"]
atlas = ExtResource("2_k838c")
region = Rect2(64, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_uv4jr"]
atlas = ExtResource("2_k838c")
region = Rect2(128, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_usgtc"]
atlas = ExtResource("2_k838c")
region = Rect2(192, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_la7sa"]
atlas = ExtResource("2_k838c")
region = Rect2(256, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_cr77w"]
atlas = ExtResource("2_k838c")
region = Rect2(320, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_2vraj"]
atlas = ExtResource("2_k838c")
region = Rect2(384, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_54ljw"]
atlas = ExtResource("2_k838c")
region = Rect2(448, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_4ktll"]
atlas = ExtResource("2_k838c")
region = Rect2(512, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_se5gl"]
atlas = ExtResource("2_k838c")
region = Rect2(576, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_5yjm0"]
atlas = ExtResource("2_k838c")
region = Rect2(640, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_gayvm"]
atlas = ExtResource("2_k838c")
region = Rect2(704, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_8kgas"]
atlas = ExtResource("2_k838c")
region = Rect2(768, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_ljjvo"]
atlas = ExtResource("2_k838c")
region = Rect2(832, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_i6md0"]
atlas = ExtResource("2_k838c")
region = Rect2(896, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_g7ded"]
atlas = ExtResource("4_saf4v")
region = Rect2(0, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_2e5l4"]
atlas = ExtResource("4_saf4v")
region = Rect2(96, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_ixhjo"]
atlas = ExtResource("4_saf4v")
region = Rect2(192, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_g1f2v"]
atlas = ExtResource("4_saf4v")
region = Rect2(288, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_48ewd"]
atlas = ExtResource("4_saf4v")
region = Rect2(384, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_45egi"]
atlas = ExtResource("4_saf4v")
region = Rect2(480, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_7dpr7"]
atlas = ExtResource("4_saf4v")
region = Rect2(576, 0, 96, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_0t86y"]
atlas = ExtResource("4_saf4v")
region = Rect2(672, 0, 96, 64)
[sub_resource type="SpriteFrames" id="SpriteFrames_dqf8u"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_6gjg8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jdp10")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_k3naf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fp260")
}],
"loop": true,
"name": &"Attack",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_g751c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ul7we")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7jbxd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1irrx")
}],
"loop": true,
"name": &"Attack2",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_vp60f")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_eeh3q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qw6wi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_51bx8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6ehno")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_uwm5y")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8ofb2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hm4l8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vecpt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_12lwm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0k70c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rwugn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_p7xuo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_33arc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_y20yo")
}],
"loop": true,
"name": &"Die",
"speed": 6.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_bd10d")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lsar3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_uv4jr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_usgtc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_la7sa")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_cr77w")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2vraj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_54ljw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4ktll")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_se5gl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5yjm0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gayvm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8kgas")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ljjvo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_i6md0")
}],
"loop": true,
"name": &"Idle",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_g7ded")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2e5l4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ixhjo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_g1f2v")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_48ewd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_45egi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7dpr7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0t86y")
}],
"loop": true,
"name": &"Run",
"speed": 12.0
}]
[sub_resource type="Curve" id="Curve_22gv0"]
min_value = -200.0
max_value = 200.0
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.0153061, 183.158), 0.0, 0.0, 0, 0, Vector2(1, -98.9474), 0.0, 0.0, 0, 0]
point_count = 3
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_p2hkm"]
height = 38.0
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_qykhm"]
radius = 16.0
height = 72.0
[node name="Enemy" type="CharacterBody2D"]
position = Vector2(10, 10)
collision_layer = 5
collision_mask = 5
script = ExtResource("1_xj62t") script = ExtResource("1_xj62t")
[node name="Sprite" type="Sprite2D" parent="."] [node name="Sprite" type="AnimatedSprite2D" parent="."]
texture = SubResource("ImageTexture_s1wwp") sprite_frames = SubResource("SpriteFrames_dqf8u")
animation = &"Idle"
autoplay = "Idle"
frame_progress = 0.93659
flip_h = true
[node name="Atk_cooldown" type="Timer" parent="."] [node name="Atk_cooldown" type="Timer" parent="."]
autostart = true autostart = true
[node name="LvlUp" type="CPUParticles2D" parent="."]
emitting = false
amount = 14
one_shot = true
explosiveness = 0.24
local_coords = true
texture = ExtResource("6_53bg1")
emission_shape = 1
emission_sphere_radius = 30.23
direction = Vector2(0, 0)
gravity = Vector2(0, 0)
initial_velocity_min = 1000.0
initial_velocity_max = 1000.0
orbit_velocity_min = 10.0
orbit_velocity_max = 10.0
radial_accel_curve = SubResource("Curve_22gv0")
scale_amount_min = 0.01
scale_amount_max = 0.01
color = Color(1, 1, 1, 0.423529)
[node name="CharacterCollision" type="CollisionShape2D" parent="."]
shape = SubResource("CapsuleShape2D_p2hkm")
[node name="AttackArea" type="Area2D" parent="."]
collision_layer = 2
collision_mask = 2
[node name="Attack1CollisionR" type="CollisionShape2D" parent="AttackArea"]
position = Vector2(3, -7)
rotation = 1.5708
skew = 0.223402
shape = SubResource("CapsuleShape2D_qykhm")
debug_color = Color(0.956863, 0.203922, 0, 0.419608)
[node name="Attack1CollisionL" type="CollisionShape2D" parent="AttackArea"]
position = Vector2(-3, -7)
rotation = 1.5708
skew = -0.169297
shape = SubResource("CapsuleShape2D_qykhm")
debug_color = Color(0.956863, 0.203922, 0, 0.419608)
[node name="Attack2CollisionR" type="CollisionShape2D" parent="AttackArea"]
position = Vector2(25, -7)
rotation = 1.5708
skew = 0.0837758
shape = SubResource("CapsuleShape2D_qykhm")
debug_color = Color(0.956863, 0.203922, 0, 0.419608)
[node name="Attack2CollisionL" type="CollisionShape2D" parent="AttackArea"]
position = Vector2(-25, -7)
rotation = 1.5708
skew = -0.0837758
shape = SubResource("CapsuleShape2D_qykhm")
debug_color = Color(0.956863, 0.203922, 0, 0.419608)
[connection signal="animation_looped" from="Sprite" to="." method="_on_sprite_animation_looped"]
[connection signal="timeout" from="Atk_cooldown" to="." method="_on_atk_cooldown_timeout"] [connection signal="timeout" from="Atk_cooldown" to="." method="_on_atk_cooldown_timeout"]

View File

@ -1,5 +1,20 @@
extends Node2D extends CharacterBody2D
@onready var levelup = [300, 900, 2700, 6500, 14000, 23000, 34000, 48000, 64000]
@onready var is_facing_left: bool = false
@onready var is_attacking: bool = false
@onready var is_dying: bool = false
@export var level: int = 1
@export var hp: int = 100
@export var maxhp: int = 100
@export var experience: int = 0
@export var state: String = "Idle"
@onready var anim: Node = get_node("Sprite")
@onready var cooldown: Node = get_node("Atk_cooldown")
@onready var lvlanim: Node = get_node("LvlUp")
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
@ -8,10 +23,79 @@ func _ready():
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta): func _process(delta):
pass if abs(velocity.x) < 0.1 && abs(velocity.y) < 0.1 && !is_attacking:
setAnimState("Idle")
elif !is_attacking:
setAnimState("Run")
is_facing_left = velocity.x >= 0
# AI STUFF
velocity.x += delta
velocity.y += delta
position += velocity
func attack():
is_attacking = true
if (level > 1):
setAnimState("Attack2")
if is_facing_left:
get_node("AttackArea/Attack2CollisionL").set_disabled(false)
else:
get_node("AttackArea/Attack2CollisionR").set_disabled(false)
else:
setAnimState("Attack")
if is_facing_left:
get_node("AttackArea/Attack1CollisionL").set_disabled(false)
else:
get_node("AttackArea/Attack1CollisionR").set_disabled(false)
func stop_attack():
is_attacking = false
get_node("AttackArea/Attack1CollisionL").set_disabled(true)
get_node("AttackArea/Attack1CollisionR").set_disabled(true)
get_node("AttackArea/Attack2CollisionL").set_disabled(true)
get_node("AttackArea/Attack2CollisionR").set_disabled(true)
func setAnimState(newstate):
anim.animation = newstate
anim.flip_h = !is_facing_left
state = newstate
func receive_damage(dmg):
hp -= dmg
if hp < 0:
velocity = Vector2(0,0)
setAnimState("Die")
state = "Die"
is_dying = true
func receive_exp(x):
experience += x
if experience > levelup[level - 1] && level <= 8:
setLevel(level + 1)
func setLevel(lvl):
level = lvl
lvlanim.restart()
if level > 2:
cooldown.wait_time = 0.5
func _attack():
pass
func _on_atk_cooldown_timeout(): func _on_atk_cooldown_timeout():
pass # Replace with function body. attack()
func _on_sprite_animation_looped():
if is_attacking:
stop_attack()
is_dying = false