From fd552541a7384f11661be7a2a0b85d0ea8796db7 Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Sun, 9 Apr 2023 16:39:45 +0200 Subject: [PATCH] Bunny AI Done using Nav Agent --- Assets/Sprites/TileMap.png | Bin 1509 -> 1477 bytes Assets/Tileset.tres | 16 ++++++++- Prefabs/bunny.tscn | 24 +++++++++++-- Scenes/Game.tscn | 5 ++- Scripts/EntitySystem/Bunny.gd | 45 ++++++++++++++++++++++++- Scripts/EntitySystem/BunnyGenerator.gd | 1 + Scripts/GameManager.gd | 3 +- Scripts/MapGenerator.gd | 2 +- Scripts/PlayerController.gd | 2 +- project.godot | 9 +++++ 10 files changed, 95 insertions(+), 12 deletions(-) diff --git a/Assets/Sprites/TileMap.png b/Assets/Sprites/TileMap.png index 33988e175dc93dd9eb56a9b2f915a180f8ac8c2a..0c1de3b394be34b87034e10ac4a3737b080f6f31 100644 GIT binary patch delta 1229 zcmV;;1Ty>O3&jhNB!7%aL_t(|obBB)cH%l122k_P+f5b#dtmzMXuJ+8)073}>iaD(2O}ktdd*t-DDS!R=XKKc7zw!6k;PbG1 zJM7+PZcf;JhWfwc9>CdRcPw4Zcp({~7_nbo2#)`S%=#=6~Xab15nS0QevP07Av>0RYqS{`=P-kEGgV*?pkP`lY?RzMX2; zcL!Yn5J~_5go+A)!)o5N%XRN9*Vwn8wd>cW{n_mwlHUHYT^oOKdjN;kylI>3ld#0# zt6je~?ayxirS5{1*#6Qk$6s6kG)?`1R=a*}+MnJ2E`3p6x6h*<0Riwqll}xWlTZN` zf9l`b2T;Recf9)d!)hK;ACh(F-+RU5sHNNfxByt}j?H$znO*y=ZPur;7vb9VA=y{+ zFTrK|qaFbbo&4>7GwZuLe}?*y%;NvK{ZRn`zy|>U5GrmD0LXM$&6}6i+o@LlDL#U7 z2LKRC004xF3V_3E-n7eg?=4`v9QSLOKeg+_SB$@L4bA@=;`RUzt9jEl*H1!;!C$*R zbafXb<8OSI^Z!uuV4A=HXqx&1y>@*#GZxF6QlCdX0s`QJlUf2lfAuKnse7>6h&ei85>!+@J&?M1ZB z`t8G)c@W7EwT6>R`cE;_dWCCe^$Hwm-YS5CR=X+oEL_BO9$n7uzh!+J*s}Xq5iMY zzv<_+cKiRRzpr;3)OR%i9(gNz{(stLeY!OSp8ZikNk8d-AcH*sfKZZiN4|H)?lJ*U3;?+ySU zRPPnxqh88>zMAk-_&SFA|K;_~Tf&09|NeD#T$q2)VQBsjF3R`5M)2Op4qjt;pP~M* z5da=BTvubU?F)djr1@8>|4WYlq51EbaJbR|U@xLyjrU;>1wfJ#GyOlc@ox`+Vx~6u rr^W_sU1RtE6vw{+00<=j07Cr-WJbAjYs7b)00000NkvXXu0mjf?H`e0 delta 1268 zcmVFS!GruKE`mjVEPYThVo?nh*)tYS&WwTpP#;W%xTFzI; z{bD*=z1Lqq@9KUG*?!~iqrYlj004Ce0Dw>efYIz1)3TheMt|FK`qPZP{c~@IZol#O zQSW}(wHO_o-uzqN_^+J6r#}i0p{xG|K(@93F#jG;*Zg+| z01)a!01TD>mk}Po`1COh2Vh*n{CiAY^WPJbfdUnh1rw7$0UCemN9_x!VYWTA{(P)g z;nl9+)V!9&_SaCm{muHXqg3Qx#Rb4@dnlXTdeZj0Wf}f`sI}{#YhFuY`^Q$h{h!q* zPt+Dr-{9Zu)|0MJXOB?7PkQ@@R=fQcf6he(003_U06?g?GXUUzy#D(6ZcA!8ANL&S z@29#uV*kD#tJYul1OO09004xF3V{7$T9)%w=QG#PkDs;c*QWj1?eCM`{-L#vzqm7i z{bE{{rF{~PG5BiNuTA^2+kdXPASJecZ0F-IE&xiYKhSE|uTA^2+ux)w#@Fogs4XA> z-UyRi12>aq0~3G!sC@x7%(jQtpYIpbi29K1-TeDKt9K!lG}|8+0JH6(YOD7bZzaA3IG7! z2mpXkac2NPru|}Co)$0f_Wb{S9q$OBZ42h<`K9U^geO)2fKUPeAXHQU>=)CroUb|` zxt8-`zlK@6K77Xb8&==^uOaRXV857_Wof?&V+{V<^`WV`AQ^wdJD>minio?71E7@p z1HE>AI58H-cTasDwFLyg8qao&El?{peo+xcBzgu3uYX`vm|%C;<>6{s%HR0{{s1ApnN@^nK|8lu!S|Z~zFL^8}ON1T%jU z005yr1i)sup3Js~n-`jG4;Q@_a;W<0F71D^nSYO|YyNuz00`CjiSSl0Wj}qI@KX3X z`uhLr`Ndnpg1!Fw**Y%FzsJxw|9cnZYhNRH?Y4v07+$BZ|7!$*ErxbA7Tc}>I7yp- zW88x=$A91aw;P~U(XGb&u=_XyAkEPC;NHf+GXO?&Z-f8dIDoBh$a`>)<6i&( egc1M%q5cC~{=gzJW4i+Y0000 min_distance_to_player: + self.velocity = dir * delta * 60 * speed + move_and_slide() + pass + +func _on_collision(body): + if body != self: collisions += 1 + pass + +func _of_collision(body): + if body != self: collisions-= 1 + pass + func damage(damage : int): health -= damage if(health <= 0): on_death() @@ -24,3 +61,9 @@ func on_death(): func sub_on_death(callback : Callable): on_death_callbacks.push_front(callback) pass + + + + + + diff --git a/Scripts/EntitySystem/BunnyGenerator.gd b/Scripts/EntitySystem/BunnyGenerator.gd index 363e504..1894fbd 100644 --- a/Scripts/EntitySystem/BunnyGenerator.gd +++ b/Scripts/EntitySystem/BunnyGenerator.gd @@ -12,6 +12,7 @@ func spawn_bunny(pos : Vector2, team : int, health : int) -> Bunny: bunny.global_position = pos bunny.health = health bunny.team = team + bunny.player = player return bunny func spawn_wave(free_tiles : Array, team: int, amount : int, health : int) -> Array: diff --git a/Scripts/GameManager.gd b/Scripts/GameManager.gd index 59911cd..71e3fb3 100644 --- a/Scripts/GameManager.gd +++ b/Scripts/GameManager.gd @@ -12,11 +12,10 @@ func _ready(): print("time for generation: " + str(gen_data.time)) pass -# Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): if(bunnys.size() == 0): wave += 1 - bunnys = bunny_generator.spawn_wave(gen_data.free_tiles.duplicate(), TEAM.EVIL, wave, 3) + bunnys = bunny_generator.spawn_wave(gen_data.free_tiles.duplicate(), TEAM.EVIL, wave * 500, 3) for bunny in bunnys: bunny.sub_on_death(func(bunny): bunnys.erase(bunny)) bunny.sub_on_death(func(bunny): bunny.queue_free()) diff --git a/Scripts/MapGenerator.gd b/Scripts/MapGenerator.gd index 3411cc5..effc4e0 100644 --- a/Scripts/MapGenerator.gd +++ b/Scripts/MapGenerator.gd @@ -266,5 +266,5 @@ func set_terrain_tile_solid(x : int, y : int): pass func set_terrain_tile_non_solid(x : int, y : int): - self.set_cell(0, Vector2i(x,y), -1) + self.set_cells_terrain_connect(0, [Vector2i(x,y)], 0, 1, false) pass diff --git a/Scripts/PlayerController.gd b/Scripts/PlayerController.gd index 584f977..4a46923 100644 --- a/Scripts/PlayerController.gd +++ b/Scripts/PlayerController.gd @@ -1,6 +1,6 @@ extends CharacterBody2D -@export var speed = 20 +@export var speed = 200 @export_range(0, 1) var damping_factor = 0.6 @export var animation_player : AnimationPlayer diff --git a/project.godot b/project.godot index 373fafb..9ea1816 100644 --- a/project.godot +++ b/project.godot @@ -15,6 +15,13 @@ run/main_scene="res://Scenes/Test.tscn" config/features=PackedStringArray("4.0", "GL Compatibility") config/icon="res://icon.svg" +[display] + +window/size/viewport_width=1280 +window/size/viewport_height=720 +window/stretch/mode="viewport" +window/stretch/aspect="expand" + [dotnet] project/assembly_name="HoppyEaster" @@ -59,10 +66,12 @@ attack={ [layer_names] 2d_physics/layer_1="Map" +2d_navigation/layer_1="Map" 2d_physics/layer_2="Player" 2d_physics/layer_3="Bunny" 2d_physics/layer_4="Projectile" 2d_physics/layer_5="Layer 5" +2d_physics/layer_7="bunny_check" [rendering]