galo 1 rok pred
rodič
commit
e01309d381
4 zmenil súbory, kde vykonal 156 pridanie a 32 odobranie
  1. 115 17
      Enemy.tscn
  2. 18 0
      NPC/soldier/soldieranim.gd
  3. 16 12
      NPC/soldier/soldieranim.tscn
  4. 7 3
      main.tscn

+ 115 - 17
Enemy.tscn

@@ -1,13 +1,108 @@
-[gd_scene load_steps=7 format=2]
+[gd_scene load_steps=8 format=2]
 
-[ext_resource path="res://enemy.gd" type="Script" id=1]
-[ext_resource path="res://damage_enemy.tscn" type="PackedScene" id=2]
-[ext_resource path="res://enemiplayerdetect.gd" type="Script" id=3]
+[sub_resource type="GDScript" id=5]
+script/source = "extends KinematicBody2D
+
+export var vida = 2
+export var speed = 70
+export var type = 1
+
+var enemy_id = 0
+
+var bullet = preload('res://bullet.tscn')
+
+func damage(arg, id):
+	vida += arg
+	get_tree().get_nodes_in_group('server')[0]._enemy_dmg(enemy_id)
+	if vida <= 0:
+		get_tree().get_nodes_in_group('enemy_authority')[0].death_count(id)
+		queue_free()
+
+var motion = Vector2()
+var target
+onready var reaction_time = int(rand_range(20,60))
+
+var dir_buffer = 0
+
+var tick = 20
+export var tickrate = 4
+var state = 'runaround'
+var fliph = false
+
+func _physics_process(delta):
+	tick += 1
+	if fmod(tick,tickrate) == 0:
+		match state:
+			'runaround':
+				type = 0 if motion.x == 0 else 1
+				fliph = motion.x > 0 and motion.x != 0
+				if target == null: _ready()
+				if target == null: return
+				dir_buffer += 1
+				if fmod(dir_buffer,reaction_time) == 0:
+					if is_instance_valid(target): motion.x = (target.global_position - global_position).normalized().x * speed
+				motion.y += 15
+				if motion.y > 0 and is_on_floor(): motion.y = 0
+				move_and_slide(motion*tickrate,Vector2.UP)
+			'shooting':
+					type = 2
+					if fmod(tick,75) == 0:
+						var instance = bullet.instance()
+						instance.motion.x = 200 if fliph else -200
+						instance.global_position = global_position + Vector2(0,-8)
+						instance.id = name
+						instance.dmg = 10
+						instance.target = 'player'
+						get_tree().get_nodes_in_group('proj')[0].add_child(instance)
+
+func _on_Area2D_body_entered(body):
+	print(body)
+	if body.is_in_group('players'):
+		var array = get_tree().get_nodes_in_group('players')
+		array.shuffle()
+		if array.size() > 0:
+			target = array[0]
+	pass # Replace with function body.
+"
+
+[sub_resource type="GDScript" id=6]
+script/source = "extends Area2D
+
+export var damage = -1
+var attacker = ''
+
+func _on_Timer_timeout():
+	queue_free()
+	pass # Replace with function body.
+
+func _on_damage_player_body_entered(area):
+	area.damage( damage, attacker)
+	pass # Replace with function body.
+"
+
+[sub_resource type="RectangleShape2D" id=1]
+
+[sub_resource type="GDScript" id=7]
+script/source = "extends Area2D
+
+func _on_damage_enemy2_body_entered(body):
+	get_parent().fliph = not get_parent().global_position.x > body.global_position.x
+	if get_parent().is_on_floor():
+		get_parent().state = 'shooting'
+	pass # Replace with function body.
+
+func _on_damage_enemy2_body_exited(body):
+	get_parent().state = 'runaround'
+	pass # Replace with function body.
+
+func _ready():
+	scale.x = rand_range(0.5,2.0)
+"
 
 [sub_resource type="RectangleShape2D" id=3]
 extents = Vector2( 120, 10 )
 
-[sub_resource type="RectangleShape2D" id=1]
+[sub_resource type="RectangleShape2D" id=4]
 
 [sub_resource type="RectangleShape2D" id=2]
 extents = Vector2( 320, 100 )
@@ -15,25 +110,29 @@ extents = Vector2( 320, 100 )
 [node name="Enemy" type="KinematicBody2D" groups=["enemy"]]
 collision_layer = 12
 collision_mask = 0
-script = ExtResource( 1 )
-tickrate = 3
+script = SubResource( 5 )
 
-[node name="damage_enemy" parent="." instance=ExtResource( 2 )]
+[node name="damage_enemy" type="Area2D" parent="."]
+collision_layer = 0
+collision_mask = 2147483650
 monitorable = false
-damage = -10
+script = SubResource( 6 )
 
-[node name="CollisionShape2D" parent="damage_enemy" index="0"]
+[node name="CollisionShape2D" type="CollisionShape2D" parent="damage_enemy"]
+shape = SubResource( 1 )
 disabled = true
 
-[node name="damage_enemy2" parent="." instance=ExtResource( 2 )]
+[node name="damage_enemy2" type="Area2D" parent="."]
+collision_layer = 0
+collision_mask = 2147483650
 monitorable = false
-script = ExtResource( 3 )
+script = SubResource( 7 )
 
-[node name="CollisionShape2D" parent="damage_enemy2" index="0"]
+[node name="CollisionShape2D" type="CollisionShape2D" parent="damage_enemy2"]
 shape = SubResource( 3 )
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource( 1 )
+shape = SubResource( 4 )
 
 [node name="Area2D" type="Area2D" parent="."]
 collision_layer = 0
@@ -42,9 +141,8 @@ collision_mask = 2
 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
 shape = SubResource( 2 )
 
+[connection signal="body_entered" from="damage_enemy" to="damage_enemy" method="_on_damage_player_body_entered"]
 [connection signal="body_entered" from="damage_enemy2" to="damage_enemy2" method="_on_damage_enemy2_body_entered"]
+[connection signal="body_entered" from="damage_enemy2" to="damage_enemy2" method="_on_damage_player_body_entered"]
 [connection signal="body_exited" from="damage_enemy2" to="damage_enemy2" method="_on_damage_enemy2_body_exited"]
 [connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"]
-
-[editable path="damage_enemy"]
-[editable path="damage_enemy2"]

+ 18 - 0
NPC/soldier/soldieranim.gd

@@ -0,0 +1,18 @@
+extends Node2D
+
+
+# Declare member variables here. Examples:
+# var a = 2
+# var b = "text"
+
+export var anim = 'walk'
+export var node = 'AnimationPlayer'
+# Called when the node enters the scene tree for the first time.
+func _ready():
+	get_node(node).play(anim)
+	pass # Replace with function body.
+
+
+# Called every frame. 'delta' is the elapsed time since the previous frame.
+#func _process(delta):
+#	pass

+ 16 - 12
NPC/soldier/soldieranim.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=60 format=2]
+[gd_scene load_steps=61 format=2]
 
 [ext_resource path="res://art/NPC/soldier/head2.png" type="Texture" id=1]
 [ext_resource path="res://art/NPC/soldier/helmet.png" type="Texture" id=2]
@@ -14,6 +14,7 @@
 [ext_resource path="res://art/handcrackk.png" type="Texture" id=12]
 [ext_resource path="res://art/NPC/soldier/bazooka.png" type="Texture" id=13]
 [ext_resource path="res://art/rocket.png" type="Texture" id=14]
+[ext_resource path="res://NPC/soldier/soldieranim.gd" type="Script" id=15]
 [ext_resource path="res://art/NPC/soldier/soldiertest2.png" type="Texture" id=16]
 
 [sub_resource type="Animation" id=39]
@@ -28364,7 +28365,7 @@ shader_param/particles_anim_h_frames = 4
 shader_param/particles_anim_v_frames = 4
 shader_param/offset = 2.0
 shader_param/particles_anim_loop = true
-shader_param/progress = 0.600034
+shader_param/progress = 0.0
 
 [sub_resource type="Animation" id=38]
 loop = true
@@ -28752,6 +28753,7 @@ tracks/13/keys = {
 }
 
 [node name="SoldierAnim" type="Node2D"]
+script = ExtResource( 15 )
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
 playback_process_mode = 0
@@ -28802,7 +28804,7 @@ text2 = ExtResource( 16 )
 
 [node name="body2" type="Sprite" parent="body"]
 position = Vector2( -2.75282, 22.6649 )
-rotation = 0.12376
+rotation = -0.079361
 texture = ExtResource( 5 )
 offset = Vector2( 0.543118, -4.89887 )
 region_enabled = true
@@ -28816,8 +28818,8 @@ region_enabled = true
 region_rect = Rect2( 28.5615, 66.124, 16.7204, 19.779 )
 
 [node name="head" type="Node2D" parent="body"]
-position = Vector2( -2.33409, 12.9288 )
-rotation = 0.235309
+position = Vector2( -3.23602, 12.4778 )
+rotation = -0.104243
 
 [node name="Sprite2" type="Sprite" parent="body/head"]
 visible = false
@@ -28901,8 +28903,8 @@ region_rect = Rect2( 7, 44, 6, 10 )
 
 [node name="arm" type="Sprite" parent="body"]
 show_behind_parent = true
-position = Vector2( -7.76328, 15.177 )
-rotation = -1.29631
+position = Vector2( -7.23355, 13.0581 )
+rotation = -0.714288
 z_index = 4
 texture = ExtResource( 5 )
 offset = Vector2( 0, 3.18198 )
@@ -28918,7 +28920,7 @@ region_rect = Rect2( 4.98756, 125.181, 5.78305, 4.11239 )
 
 [node name="forearm" type="Sprite" parent="body/arm"]
 position = Vector2( -1.94454, 7.29204 )
-rotation = -0.0235117
+rotation = -0.630371
 texture = ExtResource( 5 )
 offset = Vector2( 2.51907, 2.87262 )
 region_enabled = true
@@ -28947,8 +28949,8 @@ z_index = -1
 texture = ExtResource( 14 )
 
 [node name="gun" type="Node2D" parent="body"]
-position = Vector2( 0.535254, 17.2703 )
-rotation = -0.223873
+position = Vector2( 4.54306, 15.2504 )
+rotation = -0.874789
 z_index = 3
 
 [node name="handle" type="Node2D" parent="body/gun"]
@@ -28959,6 +28961,7 @@ position = Vector2( 0.255894, 1.32609 )
 texture = ExtResource( 3 )
 hframes = 4
 vframes = 4
+frame = 1
 
 [node name="bazooka" type="Sprite" parent="body/gun/handle"]
 visible = false
@@ -28976,7 +28979,7 @@ texture = ExtResource( 14 )
 [node name="arm2" type="Sprite" parent="body"]
 show_behind_parent = true
 position = Vector2( 0.744329, 14.8486 )
-rotation = -1.25738
+rotation = -1.16319
 texture = ExtResource( 5 )
 offset = Vector2( 0, 3.18198 )
 region_enabled = true
@@ -29000,6 +29003,7 @@ region_rect = Rect2( 4.98756, 125.181, 5.78305, 4.11239 )
 
 [node name="forearm" type="Sprite" parent="body/arm2"]
 position = Vector2( -1.94454, 7.29204 )
+rotation = -0.259049
 texture = ExtResource( 5 )
 offset = Vector2( 2.51907, 2.87262 )
 region_enabled = true
@@ -29029,7 +29033,7 @@ texture = ExtResource( 9 )
 [node name="siren" type="Sprite" parent="."]
 visible = false
 position = Vector2( 35.0016, 23.0102 )
-scale = Vector2( -1.04, 0.860003 )
+scale = Vector2( -1, 0.9 )
 z_index = -1
 texture = ExtResource( 11 )
 

+ 7 - 3
main.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=42 format=2]
+[gd_scene load_steps=43 format=2]
 
 [ext_resource path="res://login.gd" type="Script" id=1]
 [ext_resource path="res://envarg.gd" type="Script" id=2]
@@ -12,6 +12,7 @@
 [ext_resource path="res://art/Untitledcxz.png" type="Texture" id=10]
 [ext_resource path="res://Textures.gd" type="Script" id=11]
 [ext_resource path="res://Levelselect.gd" type="Script" id=12]
+[ext_resource path="res://enemy.tscn" type="PackedScene" id=13]
 [ext_resource path="res://tiles/basicimage.tres" type="Material" id=14]
 [ext_resource path="res://art/Medieval_Castle_Asset_Pack/Background/layers71.png" type="Texture" id=15]
 [ext_resource path="res://art/Medieval_Castle_Asset_Pack/Background/layers3.png" type="Texture" id=16]
@@ -211,6 +212,8 @@ render_target_v_flip = true
 
 [node name="SoldierAnim3" parent="Textures/Goblin3" instance=ExtResource( 17 )]
 position = Vector2( 32, 12 )
+anim = "shoot"
+node = "AnimationPlayer2"
 
 [node name="Goblin4" type="Viewport" parent="Textures"]
 size = Vector2( 64, 64 )
@@ -221,7 +224,6 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin4"]
 modulate = Color( 1, 0, 0.984314, 1 )
 frames = SubResource( 5 )
-frame = 3
 speed_scale = 0.9
 playing = true
 offset = Vector2( 32, 32 )
@@ -731,7 +733,6 @@ autostart = true
 script = ExtResource( 12 )
 
 [node name="test" type="Node2D" parent="Levelselect"]
-visible = false
 
 [node name="TileMap" type="TileMap" parent="Levelselect/test" groups=["terrain"]]
 tile_set = ExtResource( 8 )
@@ -744,6 +745,9 @@ tile_data = PoolIntArray( -262155, 0, 5, -196619, 0, 65539, -131083, 0, 65539, -
 [node name="enemies" type="Node2D" parent="Levelselect/test"]
 script = SubResource( 14 )
 
+[node name="Enemy" parent="Levelselect/test/enemies" instance=ExtResource( 13 )]
+position = Vector2( 786, 300 )
+
 [node name="testclient" type="Node2D" parent="Levelselect"]
 visible = false