From fed4a0779a839233c6ff9a77127854e42ae977f2 Mon Sep 17 00:00:00 2001 From: Luna Brovchuk Date: Sun, 1 Oct 2023 11:39:47 +0200 Subject: [PATCH] Make Ghost Enemy and Fix Can Once Again --- src/global.gd | 2 +- src/models/enemies/bat/Bat.tscn | 11 +++++- src/models/enemies/bat/bat.gd | 2 +- src/models/enemies/ghost/Ghost.tscn | 21 +++++++++++ src/models/enemies/ghost/ghost.gd | 27 ++++++++++++++ src/models/enemies/ghost/sprites/ghost.png | Bin 0 -> 1902 bytes .../enemies/ghost/sprites/ghost.png.import | 35 ++++++++++++++++++ src/models/enemies/trash_can/TrashCan.tscn | 5 ++- src/models/enemies/trash_can/trash_can.gd | 5 +-- src/models/player/Player.tscn | 3 -- src/models/player/player.gd | 29 ++++++++------- src/scenes/game/Game.tscn | 26 ++++++++----- src/scenes/game/sprites/background_houses.png | Bin 4756 -> 6988 bytes .../game/sprites/background_houses_old.png | Bin 0 -> 4756 bytes .../sprites/background_houses_old.png.import | 35 ++++++++++++++++++ src/scenes/game/sprites/player_icon.png | Bin 0 -> 2570 bytes .../game/sprites/player_icon.png.import | 35 ++++++++++++++++++ src/scripts/enemy_class.gd | 2 +- 18 files changed, 202 insertions(+), 36 deletions(-) create mode 100644 src/models/enemies/ghost/Ghost.tscn create mode 100644 src/models/enemies/ghost/ghost.gd create mode 100644 src/models/enemies/ghost/sprites/ghost.png create mode 100644 src/models/enemies/ghost/sprites/ghost.png.import create mode 100644 src/scenes/game/sprites/background_houses_old.png create mode 100644 src/scenes/game/sprites/background_houses_old.png.import create mode 100644 src/scenes/game/sprites/player_icon.png create mode 100644 src/scenes/game/sprites/player_icon.png.import diff --git a/src/global.gd b/src/global.gd index a7cb5d4..2e0a596 100644 --- a/src/global.gd +++ b/src/global.gd @@ -7,6 +7,6 @@ var health = 2 func add_health(amount): health = clamp(health + amount, 0, 3) - get_tree().get_root().get_node("Game/UI/Health/HealthSprite").frame = health + get_tree().get_root().get_node("Game/UIWrapper/UI/Health/HealthSprite").frame = health if health == 0: pass # TODO endgame diff --git a/src/models/enemies/bat/Bat.tscn b/src/models/enemies/bat/Bat.tscn index 52955db..aa6ecc7 100644 --- a/src/models/enemies/bat/Bat.tscn +++ b/src/models/enemies/bat/Bat.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://src/models/enemies/bat/sprite.png" type="Texture" id=1] [ext_resource path="res://src/models/enemies/bat/bat.gd" type="Script" id=2] @@ -6,7 +6,12 @@ [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 4, 3 ) +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 6, 4 ) + [node name="Bat" type="KinematicBody2D" groups=["enemy"]] +collision_layer = 2 +collision_mask = 2 script = ExtResource( 2 ) [node name="Sprite" type="Sprite" parent="."] @@ -18,3 +23,7 @@ centered = false [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] position = Vector2( 7, 4 ) shape = SubResource( 1 ) + +[node name="SameSpeciesCollider" type="CollisionShape2D" parent="."] +position = Vector2( 7, 4 ) +shape = SubResource( 2 ) diff --git a/src/models/enemies/bat/bat.gd b/src/models/enemies/bat/bat.gd index 2b471d0..7ed31af 100644 --- a/src/models/enemies/bat/bat.gd +++ b/src/models/enemies/bat/bat.gd @@ -29,4 +29,4 @@ func _physics_process(_delta): velocity.y = sin(angle + 180) velocity *= speed * speed_multiplier - move_and_slide(velocity) + velocity = move_and_slide(velocity) diff --git a/src/models/enemies/ghost/Ghost.tscn b/src/models/enemies/ghost/Ghost.tscn new file mode 100644 index 0000000..cec8f87 --- /dev/null +++ b/src/models/enemies/ghost/Ghost.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://src/models/enemies/ghost/sprites/ghost.png" type="Texture" id=1] +[ext_resource path="res://src/models/enemies/ghost/ghost.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 7, 9 ) + +[node name="Ghost" type="KinematicBody2D" groups=["enemy"]] +z_index = 2 +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) +centered = false + +[node name="Area2D" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +position = Vector2( 7, 9 ) +shape = SubResource( 1 ) diff --git a/src/models/enemies/ghost/ghost.gd b/src/models/enemies/ghost/ghost.gd new file mode 100644 index 0000000..be58284 --- /dev/null +++ b/src/models/enemies/ghost/ghost.gd @@ -0,0 +1,27 @@ +extends KinematicBody2D + +onready var player = $"../../Player" +var speed_multiplier = 1 +var dash_target = Vector2.ZERO +var dash_timer = .0 +var dashing = false + +func _physics_process(delta): + var dist = global_position.distance_to(player.global_position) + if dist > 25 and dash_target == Vector2.ZERO: + global_position = global_position.move_toward(player.global_position, dist * delta * speed_multiplier) + else: + if dash_target == Vector2.ZERO: + var angle = global_position.angle_to_point(player.global_position) + PI + dash_target = global_position + Vector2(70, 0).rotated(angle) + if dash_target != Vector2.ZERO: + dash_timer += delta + if dash_timer >= 2.0: + dash_timer = 0 + dashing = true + + if dashing: + global_position = global_position.move_toward(dash_target, 10) + if global_position == dash_target: + dashing = false + dash_target = Vector2.ZERO diff --git a/src/models/enemies/ghost/sprites/ghost.png b/src/models/enemies/ghost/sprites/ghost.png new file mode 100644 index 0000000000000000000000000000000000000000..5a33c4fdf47413e98193522fb4af1526a272f6df GIT binary patch literal 1902 zcmcIlUuYaf9Ny42*w$8BLkv=7*|wmzdpocx0D+r&Syvoo`IYi@Ve z-M!o;A!n^+%>cj@y23e06Yd zpY7qe&MBub8BOLMHxP9b5L1gJYOc@F9CxU%=0h|?BHkiJ$IA*=R@VgH!CB#0DhG1@ z5Ggq$^8uNdA1k2w8Kh&Oua`emGZ=wOBFNX=vKJb)tWf7Q*f{=K68JhKn#l?SaY24E zH_i{yfbd#E5fK1@*Yt#JrBhJT5Aq676bYmyIVsATp{5O4<(nUYl?$+K$(IKNl`?G5W_hyf;G_#_qG^J5~9HIBZqo?%m^)7iLwHd z+E|0@w`skw=@WBIszG0p6Chqw3z*BT4|Ux(I*f*AS(T>VTM~zbIiE;*64FY5$nY%j zqP?wReu+jjEYaI&YybT(g&4I9`jwzuw+ADMl!?o@Lxz>>`g~(3ATXjqfzom-sqt1t zUP&fW{6oha57TP+aIB~~ftWBNS%Ia-@&Y1|3qUr2ZUF57NE!e%pgGnE7)EeoV2T}k zZX?iK&KUK=2zrQ&npuH~N;nQSl9p{})HD$RvD2cis)`5|Ad6{5Mi$CIUB$_|E;iq! zs1iF7&u{cCrigL0-851u3m_Y)qHe*oXsfCv>X40~44{e$#3?Md*q#U+_Ugd$&8)F1 z9IH}PBttzZW-O2qGn$$dEuC0mT9!3}U^;_U#&e_Y5G~UnM=^7ksl~{!Y2ZTEKaLBF zMDo32+|7)gtzyIpS#)#F_hW***c_D|zTR{OL~*ZY1r&!&u+aS3xs`hx(%GP`mIxzV zC;SF1q;^z=0U0PVr|;NY((S~DaP|(;Hx&H;D7|SbDnYME*v=^l@nWQSi)n-+{Wq^0 zdAE9IfOT`6X4tf05Ek2p^tPHwwV+NQlEq|3*F;5Ep_s8PTf{cjg_IW`(w$y-~2ETiozh@`O>ZmzT$h>xL;{2}9_`4St z&YZc_^G%0zx})dSjt|TWLl<9pY(BsF$No3JJh!&{yXU3;m8TCZf4Zr^KfQI!$!lmp zxFi*y+MZuqdTGzQgWX$j*S;z9zDJ*2M3=7~omoiy^7r&E^Nl|@z4!i@dF1oy!l~)k zyH0)7eR%ePJ=d!*_(#tVf4H)&eZ6?_>`w02d%`akE8kwb+;{Q1UfFki<>ij&-dP&o z-}%E=kNotKgaimhhh literal 0 HcmV?d00001 diff --git a/src/models/enemies/ghost/sprites/ghost.png.import b/src/models/enemies/ghost/sprites/ghost.png.import new file mode 100644 index 0000000..cec9e4b --- /dev/null +++ b/src/models/enemies/ghost/sprites/ghost.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ghost.png-97fb088169a5396720410fd8966f5d01.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/models/enemies/ghost/sprites/ghost.png" +dest_files=[ "res://.import/ghost.png-97fb088169a5396720410fd8966f5d01.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 diff --git a/src/models/enemies/trash_can/TrashCan.tscn b/src/models/enemies/trash_can/TrashCan.tscn index 1cd5245..c13bf15 100644 --- a/src/models/enemies/trash_can/TrashCan.tscn +++ b/src/models/enemies/trash_can/TrashCan.tscn @@ -7,14 +7,15 @@ extents = Vector2( 6, 7 ) [node name="TrashCan" type="KinematicBody2D"] +z_index = 2 script = ExtResource( 2 ) [node name="Sprite" type="Sprite" parent="."] +position = Vector2( 3, 0 ) texture = ExtResource( 1 ) -centered = false [node name="EnemyCollider" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyCollider"] -position = Vector2( 6, 7 ) +position = Vector2( 3, 0 ) shape = SubResource( 1 ) diff --git a/src/models/enemies/trash_can/trash_can.gd b/src/models/enemies/trash_can/trash_can.gd index 65b3682..e616c5f 100644 --- a/src/models/enemies/trash_can/trash_can.gd +++ b/src/models/enemies/trash_can/trash_can.gd @@ -45,7 +45,7 @@ func _ready(): last_y = self.global_position.y path_sprite.centered = false - path_sprite.modulate.a = 1 + path_sprite.modulate.a = 0.5 get_parent().call_deferred("add_child", path_sprite) func drop_trash(): @@ -55,10 +55,9 @@ func drop_trash(): func _physics_process(delta): if start_timer < 2: - path_sprite.modulate.a = 2 - start_timer + path_sprite.modulate.a = (2 - start_timer) / 2 start_timer += delta return - drop_timer += delta velocity = Vector2.ZERO diff --git a/src/models/player/Player.tscn b/src/models/player/Player.tscn index ab17ddf..0318b23 100644 --- a/src/models/player/Player.tscn +++ b/src/models/player/Player.tscn @@ -25,6 +25,3 @@ shape = SubResource( 1 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyCollision"] position = Vector2( 12, 12 ) shape = SubResource( 2 ) - -[connection signal="area_entered" from="EnemyCollision" to="." method="area_entered"] -[connection signal="area_exited" from="EnemyCollision" to="." method="area_exited"] diff --git a/src/models/player/player.gd b/src/models/player/player.gd index 2464bdc..8c5ceef 100644 --- a/src/models/player/player.gd +++ b/src/models/player/player.gd @@ -1,28 +1,29 @@ extends KinematicBody2D var velocity = Vector2.ZERO -var speed_multiplier = 1 +var speed_multiplier: float = 1.0 +var slowed = false var speed = 100 func get_input(): var input_direction = Input.get_vector("left", "right", "up", "down") velocity = input_direction * speed -func area_entered(area): - if area.get_parent().is_in_group("trash_drop"): - speed_multiplier = 0.5 - -func area_exited(area): - # Check if __all__ the drops exited - var exited = true - for area in $EnemyCollision.get_overlapping_areas(): - if area.get_parent().is_in_group("trash_drop"): - exited = false - if exited: - speed_multiplier = 1 - func _physics_process(_delta): get_input() + + var areas = $EnemyCollision.get_overlapping_areas() + slowed = false + for area in areas: + if area.get_parent().is_in_group("trash_drop"): + slowed = true + break + + if slowed: + speed_multiplier = 0.5 + else: + speed_multiplier = 1.0 + velocity = move_and_slide(velocity * speed_multiplier) _choose_target() diff --git a/src/scenes/game/Game.tscn b/src/scenes/game/Game.tscn index 4784134..de2e68a 100644 --- a/src/scenes/game/Game.tscn +++ b/src/scenes/game/Game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=19 format=2] +[gd_scene load_steps=20 format=2] [ext_resource path="res://src/scenes/menu/background/background.png" type="Texture" id=1] [ext_resource path="res://src/scenes/game/sprites/background_houses.png" type="Texture" id=2] @@ -9,11 +9,12 @@ [ext_resource path="res://src/scenes/game/sprites/health/1.png" type="Texture" id=7] [ext_resource path="res://src/scenes/game/sprites/health/2.png" type="Texture" id=8] [ext_resource path="res://src/scenes/game/sprites/health/0.png" type="Texture" id=9] -[ext_resource path="res://icon.png" type="Texture" id=10] +[ext_resource path="res://src/scenes/game/sprites/player_icon.png" type="Texture" id=10] [ext_resource path="res://src/scenes/game/game.gd" type="Script" id=11] [ext_resource path="res://src/scenes/game/sprites/ui_background.png" type="Texture" id=12] [ext_resource path="res://src/models/enemies/trash_can/TrashCan.tscn" type="PackedScene" id=13] [ext_resource path="res://src/models/enemies/bat/Bat.tscn" type="PackedScene" id=14] +[ext_resource path="res://src/models/enemies/ghost/Ghost.tscn" type="PackedScene" id=15] [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 10, 60 ) @@ -81,29 +82,35 @@ z_index = 1 position = Vector2( 142, 54 ) z_index = 1 +[node name="Ghost" parent="View/Enemies" instance=ExtResource( 15 )] +position = Vector2( 400, 50 ) + [node name="Player" parent="View" instance=ExtResource( 5 )] position = Vector2( 46, 42 ) z_index = 1 -[node name="UI" type="Control" parent="."] +[node name="UIWrapper" type="CanvasLayer" parent="."] +layer = 3 + +[node name="UI" type="Control" parent="UIWrapper"] margin_right = 40.0 margin_bottom = 40.0 -[node name="Background" type="TextureRect" parent="UI"] +[node name="Background" type="TextureRect" parent="UIWrapper/UI"] margin_top = 120.0 margin_right = 320.0 margin_bottom = 180.0 texture = ExtResource( 12 ) expand = true -[node name="SpellHolder" type="Control" parent="UI"] +[node name="SpellHolder" type="Control" parent="UIWrapper/UI"] margin_left = 120.0 margin_top = 145.0 margin_right = 200.0 margin_bottom = 159.0 script = ExtResource( 3 ) -[node name="Text" type="Label" parent="UI/SpellHolder"] +[node name="Text" type="Label" parent="UIWrapper/UI/SpellHolder"] margin_left = 1.0 margin_top = -14.0 margin_right = 79.0 @@ -111,18 +118,17 @@ margin_bottom = 7.0 custom_fonts/font = SubResource( 1 ) text = "spell modifiers" -[node name="Health" type="Control" parent="UI"] +[node name="Health" type="Control" parent="UIWrapper/UI"] margin_right = 40.0 margin_bottom = 40.0 -[node name="HealthSprite" type="AnimatedSprite" parent="UI/Health"] +[node name="HealthSprite" type="AnimatedSprite" parent="UIWrapper/UI/Health"] position = Vector2( 70, 145 ) frames = SubResource( 4 ) frame = 2 centered = false -[node name="PlayerIcon" type="Sprite" parent="UI"] +[node name="PlayerIcon" type="Sprite" parent="UIWrapper/UI"] position = Vector2( 20, 134 ) -scale = Vector2( 0.5, 0.5 ) texture = ExtResource( 10 ) centered = false diff --git a/src/scenes/game/sprites/background_houses.png b/src/scenes/game/sprites/background_houses.png index 1f31d43612e2edf99e6f47ea2b263a75b220b823..8a9acffc68f92da5d0d4e94ba37028d5071587c0 100644 GIT binary patch delta 4048 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�YEr|bmMFwv)FXXE2 zfl+6s-ScK|*sXA;^U&z2zAawWT4tGIy1PJd_hQKBbGtS&618GeLGRV0A^BIzPFRUE z?#y$y=9;GBR%3ECjy!qKVxX^FYyIq0uxV-E6!^;ywb*H*jetPZMp%`i0Ot=&zVUTS zzgh-r{0?6fKbI4(1;-n^T~>}Aa3uE46^vn@2O$!9jr;Wa&H_1Cr7NJF4*5lI!#fe; zt7m(Dt>DyDUP53!-9WE)Mi(FQ?3gQ`;BRn?D4RYl5;_x)l6mLFqb9`!@5YQ^RAud5 zb-MV2dWxR~D4_Uvab?gaygk38mTf1cy|0WJtkT&Pyng z)VZOlQ)ng2|8hP)tt~`X<`D<@;u_7_yr%Q>TEfr>^&n34wd|wg&?$C=ea_44fIl>k jAvMd>SqH#kM%Z=k%apfwjxIPk0m5Z#?SL<~B*y+5Ot}=G delta 2178 zcma)5c{tSj9{&Djh8blU%9ew%99f#0m6-_*4K=q8<(8{O3^PNb(TS|nOt{BVvW)E8 zQz}uRK|2zYPEwXgjx9PwVrrZQ6L-#i?(^K|KKGyV`R{!`pXYtw&(>+5^J69jww_!^ zI|vhffSsb^s8}NI0G>i4<7qgm9gaxD;mk47Vd1o&c!m3dmNsN$CE{~a9c}?gFTx|U{kSVDv^pM zkw_dYg@p^mQiuc=i9!w_I8bpSDuN|Gs4@&$aySG$ju^nfayUdbmJ>+AW2tN^8>>{K z;_X=+7LJ4$b*XGZ{>QdxUd2)5qoyZPsOpMFkV}8f*Z&h7`%B8=cWT*?$X(r9)UCN7 zU>a6o0YIuS87>E+i|2-$PY${N&>}7C^VmAp-WLr0kz0360jty4crNQk+%uUONp6;1 z7kAASwT|*}eK1RMQnUO*u0GVQSGhA@R`5P6YM0j|i)K@daAL=u*z_h^THo;WwDq8g zNwHdC!$?K8(Li^sh|vFb{{rvo!s%c^f2`j;&IEr66;aO5ATc-pOZC7#dyN8D}KIh)G(0)Hq@gVS{F~#sJW?Ucza!0K%@@ir9hRnjcGL~Zd&$PgO?jON;lld zhi1BJcx-%GYD!L*YQdZ$(-b*}t~~z`E-Njp7?gOnnF*IQhD>xO)W+fOCJ3{=F}}zS zGrVx0T;f^5R;|>G;`0o^gKIQyfO`4ad(~^kz%_3^*Cy#w4W#1=>cZ!8dJp-3*9Ua# zc){jikDzmlesmO+)cUQXzCQ#9(8NGcFb+*8-pSQ9fmNR`UNoJYL<)VT=WOG8-9MfX zE^F!R1ZLv&(ynF86q{ebYx3ybDO#C|UR{kHsJ|t4ase1F0^Q=TO$Ui?0Fsp+7hLJ_ z9ryXFMenS#cdzn?9_%bonu?V~_>Rr2MGDNWi!M0TMR8`Iz-4Qi#x^cQiG>6L3w}WUL&%;=}B& zf~Na#mmUQ;u8)rn&;1SweJTykE-mk8FmmUe4V&{`_yfjV`-_3WXSQdSFYJ2>&ZFsI z|6!h2jPy&xmfyu&;(HzR|4D4(&F|13QH2ob5=Cog^LJ?@Ee|KocQ$G+!DLKY5t!54eIL9@z z{hZHgX;t^U@Q>bx6I%a<<*m1nk2VW}%6hlOuAVafI-xIEcWiBgnGnQ|P0D)=?h_g` z&&7nH>7DryEah%TG{1P?3{62BM&J|bWk_#DV!W&TuHB+-YSzr$;}4P~q^t?o;D6uL zf0biY_W7!70N?6fi`iKaIrF}?Jzl~g0GfED;#F*g__zo!jFlZ7If4Yf)<;xFH$Lq# z#EiqycDom~+TCnAJqGkq!7*{M?&1T!peyEMt zGeQXY9nB*_LpOc}I?l>R(qJ72)IJroMG>*ZT(<_wZO=Gg4n^DwQB$~kC-vX(b60?* z7LJ<2@w&Jrq<@zZwFT|8)J_KPOumd@c|S4*RvuB8dB3cVYDHX?`i>vfj2S38;BoyQ zLr)XME=?AbCu6qj*o^9pMZ`7?4;jN^CEP^&yq)j6pG!I8@SaGcy=N}2upTox4G&Cp z`RQ_K@qYcasz3>7j7(nk(1>w%;=!aD(J=IM4AgfroaLFxvv(T{; zlBL@uyi)Q3*}?q?G1#WF!{LHHx-1^?%-k^_QcpH{f|tT^B-?~F_)7L^{g%&Z-9Q;k MHxI^bSO0{60cNzQ-v9sr diff --git a/src/scenes/game/sprites/background_houses_old.png b/src/scenes/game/sprites/background_houses_old.png new file mode 100644 index 0000000000000000000000000000000000000000..1f31d43612e2edf99e6f47ea2b263a75b220b823 GIT binary patch literal 4756 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 1: hp -= 5 -func _physics_process(delta): +func _physics_process(_delta): check_frozen() check_poisoned()