enemy.tscn 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. [gd_scene load_steps=10 format=2]
  2. [ext_resource path="res://icon.png" type="Texture" id=1]
  3. [ext_resource path="res://Health.tscn" type="PackedScene" id=2]
  4. [ext_resource path="res://enemy.gd" type="Script" id=3]
  5. [ext_resource path="res://hitbox.tscn" type="PackedScene" id=4]
  6. [ext_resource path="res://meatspawn.gd" type="Script" id=5]
  7. [sub_resource type="RectangleShape2D" id=1]
  8. [sub_resource type="Animation" id=2]
  9. length = 0.001
  10. tracks/0/type = "value"
  11. tracks/0/path = NodePath(".:speed")
  12. tracks/0/interp = 1
  13. tracks/0/loop_wrap = true
  14. tracks/0/imported = false
  15. tracks/0/enabled = true
  16. tracks/0/keys = {
  17. "times": PoolRealArray( 0 ),
  18. "transitions": PoolRealArray( 1 ),
  19. "update": 0,
  20. "values": [ 150 ]
  21. }
  22. tracks/1/type = "value"
  23. tracks/1/path = NodePath(".:exppt")
  24. tracks/1/interp = 1
  25. tracks/1/loop_wrap = true
  26. tracks/1/imported = false
  27. tracks/1/enabled = true
  28. tracks/1/keys = {
  29. "times": PoolRealArray( 0 ),
  30. "transitions": PoolRealArray( 1 ),
  31. "update": 0,
  32. "values": [ 15 ]
  33. }
  34. tracks/2/type = "value"
  35. tracks/2/path = NodePath(".:detectionzone")
  36. tracks/2/interp = 1
  37. tracks/2/loop_wrap = true
  38. tracks/2/imported = false
  39. tracks/2/enabled = true
  40. tracks/2/keys = {
  41. "times": PoolRealArray( 0 ),
  42. "transitions": PoolRealArray( 1 ),
  43. "update": 0,
  44. "values": [ 256 ]
  45. }
  46. tracks/3/type = "value"
  47. tracks/3/path = NodePath(".:reactiontime")
  48. tracks/3/interp = 1
  49. tracks/3/loop_wrap = true
  50. tracks/3/imported = false
  51. tracks/3/enabled = true
  52. tracks/3/keys = {
  53. "times": PoolRealArray( 0 ),
  54. "transitions": PoolRealArray( 1 ),
  55. "update": 0,
  56. "values": [ 1 ]
  57. }
  58. tracks/4/type = "value"
  59. tracks/4/path = NodePath(".:attackrange")
  60. tracks/4/interp = 1
  61. tracks/4/loop_wrap = true
  62. tracks/4/imported = false
  63. tracks/4/enabled = true
  64. tracks/4/keys = {
  65. "times": PoolRealArray( 0 ),
  66. "transitions": PoolRealArray( 1 ),
  67. "update": 0,
  68. "values": [ 64 ]
  69. }
  70. tracks/5/type = "value"
  71. tracks/5/path = NodePath("hitbox:dmg")
  72. tracks/5/interp = 1
  73. tracks/5/loop_wrap = true
  74. tracks/5/imported = false
  75. tracks/5/enabled = true
  76. tracks/5/keys = {
  77. "times": PoolRealArray( 0 ),
  78. "transitions": PoolRealArray( 1 ),
  79. "update": 0,
  80. "values": [ 5 ]
  81. }
  82. tracks/6/type = "value"
  83. tracks/6/path = NodePath("Health:health_max")
  84. tracks/6/interp = 1
  85. tracks/6/loop_wrap = true
  86. tracks/6/imported = false
  87. tracks/6/enabled = true
  88. tracks/6/keys = {
  89. "times": PoolRealArray( 0 ),
  90. "transitions": PoolRealArray( 1 ),
  91. "update": 0,
  92. "values": [ 20 ]
  93. }
  94. tracks/7/type = "value"
  95. tracks/7/path = NodePath("Sprite:modulate")
  96. tracks/7/interp = 1
  97. tracks/7/loop_wrap = true
  98. tracks/7/imported = false
  99. tracks/7/enabled = true
  100. tracks/7/keys = {
  101. "times": PoolRealArray( 0 ),
  102. "transitions": PoolRealArray( 1 ),
  103. "update": 0,
  104. "values": [ Color( 1, 0, 0, 1 ) ]
  105. }
  106. [sub_resource type="Animation" id=3]
  107. resource_name = "enemy"
  108. tracks/0/type = "value"
  109. tracks/0/path = NodePath(".:speed")
  110. tracks/0/interp = 1
  111. tracks/0/loop_wrap = true
  112. tracks/0/imported = false
  113. tracks/0/enabled = true
  114. tracks/0/keys = {
  115. "times": PoolRealArray( 0 ),
  116. "transitions": PoolRealArray( 1 ),
  117. "update": 1,
  118. "values": [ 150 ]
  119. }
  120. tracks/1/type = "value"
  121. tracks/1/path = NodePath(".:exppt")
  122. tracks/1/interp = 1
  123. tracks/1/loop_wrap = true
  124. tracks/1/imported = false
  125. tracks/1/enabled = true
  126. tracks/1/keys = {
  127. "times": PoolRealArray( 0 ),
  128. "transitions": PoolRealArray( 1 ),
  129. "update": 1,
  130. "values": [ 15 ]
  131. }
  132. tracks/2/type = "value"
  133. tracks/2/path = NodePath(".:detectionzone")
  134. tracks/2/interp = 1
  135. tracks/2/loop_wrap = true
  136. tracks/2/imported = false
  137. tracks/2/enabled = true
  138. tracks/2/keys = {
  139. "times": PoolRealArray( 0 ),
  140. "transitions": PoolRealArray( 1 ),
  141. "update": 1,
  142. "values": [ 256 ]
  143. }
  144. tracks/3/type = "value"
  145. tracks/3/path = NodePath(".:reactiontime")
  146. tracks/3/interp = 1
  147. tracks/3/loop_wrap = true
  148. tracks/3/imported = false
  149. tracks/3/enabled = true
  150. tracks/3/keys = {
  151. "times": PoolRealArray( 0 ),
  152. "transitions": PoolRealArray( 1 ),
  153. "update": 1,
  154. "values": [ 1 ]
  155. }
  156. tracks/4/type = "value"
  157. tracks/4/path = NodePath(".:attackrange")
  158. tracks/4/interp = 1
  159. tracks/4/loop_wrap = true
  160. tracks/4/imported = false
  161. tracks/4/enabled = true
  162. tracks/4/keys = {
  163. "times": PoolRealArray( 0 ),
  164. "transitions": PoolRealArray( 1 ),
  165. "update": 1,
  166. "values": [ 64 ]
  167. }
  168. tracks/5/type = "value"
  169. tracks/5/path = NodePath("hitbox:dmg")
  170. tracks/5/interp = 1
  171. tracks/5/loop_wrap = true
  172. tracks/5/imported = false
  173. tracks/5/enabled = true
  174. tracks/5/keys = {
  175. "times": PoolRealArray( 0 ),
  176. "transitions": PoolRealArray( 1 ),
  177. "update": 1,
  178. "values": [ 5 ]
  179. }
  180. tracks/6/type = "value"
  181. tracks/6/path = NodePath("Health:health_max")
  182. tracks/6/interp = 1
  183. tracks/6/loop_wrap = true
  184. tracks/6/imported = false
  185. tracks/6/enabled = true
  186. tracks/6/keys = {
  187. "times": PoolRealArray( 0 ),
  188. "transitions": PoolRealArray( 1 ),
  189. "update": 1,
  190. "values": [ 20 ]
  191. }
  192. tracks/7/type = "value"
  193. tracks/7/path = NodePath("Sprite:modulate")
  194. tracks/7/interp = 1
  195. tracks/7/loop_wrap = true
  196. tracks/7/imported = false
  197. tracks/7/enabled = true
  198. tracks/7/keys = {
  199. "times": PoolRealArray( 0 ),
  200. "transitions": PoolRealArray( 1 ),
  201. "update": 0,
  202. "values": [ Color( 1, 0, 0, 1 ) ]
  203. }
  204. [sub_resource type="Animation" id=4]
  205. resource_name = "peaceful"
  206. tracks/0/type = "value"
  207. tracks/0/path = NodePath(".:speed")
  208. tracks/0/interp = 1
  209. tracks/0/loop_wrap = true
  210. tracks/0/imported = false
  211. tracks/0/enabled = true
  212. tracks/0/keys = {
  213. "times": PoolRealArray( 0 ),
  214. "transitions": PoolRealArray( 1 ),
  215. "update": 1,
  216. "values": [ -150 ]
  217. }
  218. tracks/1/type = "value"
  219. tracks/1/path = NodePath(".:exppt")
  220. tracks/1/interp = 1
  221. tracks/1/loop_wrap = true
  222. tracks/1/imported = false
  223. tracks/1/enabled = true
  224. tracks/1/keys = {
  225. "times": PoolRealArray( 0 ),
  226. "transitions": PoolRealArray( 1 ),
  227. "update": 1,
  228. "values": [ 15 ]
  229. }
  230. tracks/2/type = "value"
  231. tracks/2/path = NodePath(".:detectionzone")
  232. tracks/2/interp = 1
  233. tracks/2/loop_wrap = true
  234. tracks/2/imported = false
  235. tracks/2/enabled = true
  236. tracks/2/keys = {
  237. "times": PoolRealArray( 0 ),
  238. "transitions": PoolRealArray( 1 ),
  239. "update": 1,
  240. "values": [ 256 ]
  241. }
  242. tracks/3/type = "value"
  243. tracks/3/path = NodePath(".:reactiontime")
  244. tracks/3/interp = 1
  245. tracks/3/loop_wrap = true
  246. tracks/3/imported = false
  247. tracks/3/enabled = true
  248. tracks/3/keys = {
  249. "times": PoolRealArray( 0 ),
  250. "transitions": PoolRealArray( 1 ),
  251. "update": 1,
  252. "values": [ 1 ]
  253. }
  254. tracks/4/type = "value"
  255. tracks/4/path = NodePath(".:attackrange")
  256. tracks/4/interp = 1
  257. tracks/4/loop_wrap = true
  258. tracks/4/imported = false
  259. tracks/4/enabled = true
  260. tracks/4/keys = {
  261. "times": PoolRealArray( 0 ),
  262. "transitions": PoolRealArray( 1 ),
  263. "update": 1,
  264. "values": [ 64 ]
  265. }
  266. tracks/5/type = "value"
  267. tracks/5/path = NodePath("hitbox:dmg")
  268. tracks/5/interp = 1
  269. tracks/5/loop_wrap = true
  270. tracks/5/imported = false
  271. tracks/5/enabled = true
  272. tracks/5/keys = {
  273. "times": PoolRealArray( 0 ),
  274. "transitions": PoolRealArray( 1 ),
  275. "update": 1,
  276. "values": [ 0 ]
  277. }
  278. tracks/6/type = "value"
  279. tracks/6/path = NodePath("Health:health_max")
  280. tracks/6/interp = 1
  281. tracks/6/loop_wrap = true
  282. tracks/6/imported = false
  283. tracks/6/enabled = true
  284. tracks/6/keys = {
  285. "times": PoolRealArray( 0 ),
  286. "transitions": PoolRealArray( 1 ),
  287. "update": 1,
  288. "values": [ 20 ]
  289. }
  290. tracks/7/type = "value"
  291. tracks/7/path = NodePath("Sprite:modulate")
  292. tracks/7/interp = 1
  293. tracks/7/loop_wrap = true
  294. tracks/7/imported = false
  295. tracks/7/enabled = true
  296. tracks/7/keys = {
  297. "times": PoolRealArray( 0 ),
  298. "transitions": PoolRealArray( 1 ),
  299. "update": 0,
  300. "values": [ Color( 0.101961, 1, 0, 1 ) ]
  301. }
  302. [node name="enemy" type="KinematicBody2D" groups=["enemy"]]
  303. scale = Vector2( 0.75, 0.75 )
  304. script = ExtResource( 3 )
  305. detectionzone = 256
  306. [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
  307. shape = SubResource( 1 )
  308. [node name="Sprite" type="Sprite" parent="."]
  309. modulate = Color( 1, 0, 0, 1 )
  310. texture = ExtResource( 1 )
  311. [node name="Health" parent="." instance=ExtResource( 2 )]
  312. health_max = 20
  313. [node name="hitbox" parent="." instance=ExtResource( 4 )]
  314. dmg = 5
  315. affect = "player"
  316. [node name="types" type="AnimationPlayer" parent="."]
  317. anims/RESET = SubResource( 2 )
  318. anims/enemy = SubResource( 3 )
  319. anims/peaceful = SubResource( 4 )
  320. [node name="die" type="Node2D" parent="."]
  321. script = ExtResource( 5 )
  322. [connection signal="die" from="Health" to="die" method="_on_Health_die"]