Browse Source

enemies can shoot, hitflash animation

galo 1 year ago
parent
commit
c0d88fec82
15 changed files with 99 additions and 29 deletions
  1. 4 0
      Client.gd
  2. 14 1
      Enemy.gd
  3. 1 2
      Enemy.tscn
  4. 7 4
      NPC/soldier/soldieranim.tscn
  5. 3 0
      Server.gd
  6. 2 2
      Server.tscn
  7. 12 6
      bullet.gd
  8. 3 2
      bullet.tscn
  9. 4 1
      enemie/monster.tscn
  10. 14 0
      enemie/monstereffects.gd
  11. 2 1
      enemiplayerdetect.gd
  12. 1 0
      envarg.gd
  13. 24 3
      main.tscn
  14. 5 5
      playerphysics.gd
  15. 3 2
      playerphysics.tscn

+ 4 - 0
Client.gd

@@ -161,6 +161,10 @@ remote func projectiles_sync(arg):
 	for i in sprite.size():
 		$projectiles.get_child(i).texture = get_node('../Textures').dict[sprite[i]]
 
+remote func enemy_dmg_anim(arg):
+	$enemies.get_child(arg).flash = true
+	$enemies.get_child(arg).counter = 0
+
 remote func enemies_position_2(arg):
 	if not has_node('enemies'): return
 	for i in $enemies.get_children():

+ 14 - 1
Enemy.gd

@@ -4,8 +4,13 @@ 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()
@@ -16,7 +21,7 @@ onready var reaction_time = int(rand_range(20,60))
 
 var dir_buffer = 0
 
-var tick = 0
+var tick = 20
 export var tickrate = 4
 var state = 'runaround'
 var fliph = false
@@ -38,6 +43,14 @@ func _physics_process(delta):
 				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)

+ 1 - 2
Enemy.tscn

@@ -10,7 +10,7 @@ extents = Vector2( 120, 10 )
 [sub_resource type="RectangleShape2D" id=1]
 
 [sub_resource type="RectangleShape2D" id=2]
-extents = Vector2( 180, 100 )
+extents = Vector2( 320, 100 )
 
 [node name="Enemy" type="KinematicBody2D" groups=["enemy"]]
 collision_layer = 12
@@ -40,7 +40,6 @@ collision_layer = 0
 collision_mask = 2
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
-visible = false
 shape = SubResource( 2 )
 
 [connection signal="body_entered" from="damage_enemy2" to="damage_enemy2" method="_on_damage_enemy2_body_entered"]

+ 7 - 4
NPC/soldier/soldieranim.tscn

@@ -28827,7 +28827,7 @@ 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.235308
+rotation = 0.235309
 
 [node name="Sprite2" type="Sprite" parent="body/head"]
 visible = false
@@ -28864,7 +28864,7 @@ text1 = ExtResource( 2 )
 text2 = ExtResource( 15 )
 
 [node name="medal" type="Sprite" parent="body"]
-position = Vector2( 1.05112, 19.9713 )
+position = Vector2( 1.38842, 17.3504 )
 z_index = 3
 texture = ExtResource( 5 )
 region_enabled = true
@@ -28889,7 +28889,7 @@ region_rect = Rect2( 116.939, 29.9277, 18.1202, 9.5099 )
 
 [node name="leg" type="Sprite" parent="body"]
 position = Vector2( -4.5533, 30.4309 )
-rotation = 0.339745
+rotation = 0.339746
 z_index = -3
 texture = ExtResource( 5 )
 offset = Vector2( 0, 5 )
@@ -28898,7 +28898,6 @@ region_rect = Rect2( 82, 34, 7, 13 )
 
 [node name="feet" type="Sprite" parent="body/leg"]
 position = Vector2( -2.1086, 9.42322 )
-rotation = 0.770917
 texture = ExtResource( 5 )
 region_enabled = true
 region_rect = Rect2( 7, 45, 6, 10 )
@@ -28946,6 +28945,7 @@ region_rect = Rect2( 76.8466, 81.4215, 10.1525, 6.2971 )
 
 [node name="hand" type="Sprite" parent="body/arm/forearm"]
 position = Vector2( 4.42659, 3.85746 )
+rotation = 1.14058
 texture = ExtResource( 5 )
 offset = Vector2( 1.62801, 0.0316229 )
 region_enabled = true
@@ -28971,6 +28971,7 @@ rotation = -0.223873
 z_index = 3
 
 [node name="handle" type="Node2D" parent="body/gun"]
+position = Vector2( 14.9428, -3.99877 )
 
 [node name="Sprite" type="Sprite" parent="body/gun/handle"]
 position = Vector2( 0.255894, 1.32609 )
@@ -29025,6 +29026,7 @@ region_rect = Rect2( 76.8466, 81.4215, 10.1525, 6.2971 )
 
 [node name="hand" type="Sprite" parent="body/arm2/forearm"]
 position = Vector2( 4.42659, 2.26468 )
+rotation = 1.28061
 z_index = 2
 texture = ExtResource( 5 )
 offset = Vector2( 1.62801, 0.0316229 )
@@ -29059,6 +29061,7 @@ texture = ExtResource( 12 )
 "anims/Nova Animação" = SubResource( 38 )
 
 [node name="AnimationPlayer2" type="AnimationPlayer" parent="."]
+playback_speed = 2.0
 anims/shoot = SubResource( 41 )
 
 [node name="AnimationPlayer3" type="AnimationPlayer" parent="."]

+ 3 - 0
Server.gd

@@ -152,6 +152,9 @@ func _physics_process(delta):
 #				enemies_datachunk.append_array( bytetest )
 #		rpc_unreliable_id(0, 'enemies_position_2', enemies_datachunk)
 
+func _enemy_dmg(enemy_id):
+	rpc_unreliable_id(0, 'enemy_dmg_anim', enemy_id)
+
 func pshootanim(arg):
 	rpc_unreliable_id(0, 'aimanim', arg)
 

+ 2 - 2
Server.tscn

@@ -3,7 +3,7 @@
 [ext_resource path="res://Server.gd" type="Script" id=2]
 [ext_resource path="res://spawner.gd" type="Script" id=3]
 
-[node name="Server" type="Node"]
+[node name="Server" type="Node" groups=["server"]]
 script = ExtResource( 2 )
 database = NodePath("../Database")
 tickrate = 4
@@ -12,7 +12,7 @@ tickrate = 4
 
 [node name="dmgbox" type="Node" parent="."]
 
-[node name="projectiles" type="Node" parent="."]
+[node name="projectiles" type="Node" parent="." groups=["proj"]]
 
 [node name="Enemies" type="Node" parent="." groups=["enemy_authority"]]
 script = ExtResource( 3 )

+ 12 - 6
bullet.gd

@@ -1,20 +1,26 @@
-extends KinematicBody2D
+extends Area2D
 
 var motion = Vector2.ZERO
 var type = 4
 var id = ''
 var fliph = false
-
+var target = 'enemy'
+var dmg = 1
 #func _ready():
 #	print('bullet gen...')
 
 func _physics_process(delta):
-	var collide = move_and_collide(motion*delta)
+	global_position += (motion*delta)
+
+func _on_bullet_body_entered(collide):
 	if collide: 
-		if collide.collider.is_in_group('enemy'):
-			collide.collider.damage(-1,id)
+		if collide.is_in_group(target):
+			collide.damage(-dmg,id)
 			print('col enemy')
-		queue_free()
+			queue_free()
+		if collide.is_in_group('terrain'):
+			queue_free()
 
 func _on_Timer_timeout():
 	queue_free()
+	pass # Replace with function body.

+ 3 - 2
bullet.tscn

@@ -5,9 +5,9 @@
 [sub_resource type="RectangleShape2D" id=1]
 extents = Vector2( 3, 3 )
 
-[node name="bullet" type="KinematicBody2D"]
+[node name="bullet" type="Area2D"]
 collision_layer = 13
-collision_mask = 5
+collision_mask = 13
 script = ExtResource( 1 )
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
@@ -17,4 +17,5 @@ shape = SubResource( 1 )
 wait_time = 3.0
 autostart = true
 
+[connection signal="body_entered" from="." to="." method="_on_bullet_body_entered"]
 [connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]

+ 4 - 1
enemie/monster.tscn

@@ -1,3 +1,6 @@
-[gd_scene format=2]
+[gd_scene load_steps=2 format=2]
+
+[ext_resource path="res://enemie/monstereffects.gd" type="Script" id=1]
 
 [node name="monster" type="Sprite"]
+script = ExtResource( 1 )

+ 14 - 0
enemie/monstereffects.gd

@@ -0,0 +1,14 @@
+extends Sprite
+
+var flash = false
+var counter = 0
+
+func _physics_process(delta):
+	if flash:
+		counter += 1
+		modulate.r *= 1.4
+		modulate.g *= 1.3
+		modulate.b *= 0.8
+		if counter >= 5:
+			flash = false
+			modulate = Color(1,1,1,1)

+ 2 - 1
enemiplayerdetect.gd

@@ -2,7 +2,8 @@ extends Area2D
 
 func _on_damage_enemy2_body_entered(body):
 	get_parent().fliph = not get_parent().global_position.x > body.global_position.x
-	get_parent().state = 'shooting'
+	if get_parent().is_on_floor():
+		get_parent().state = 'shooting'
 	pass # Replace with function body.
 
 func _on_damage_enemy2_body_exited(body):

+ 1 - 0
envarg.gd

@@ -16,6 +16,7 @@ func _ready():
 			yield(get_tree().create_timer(1.0),'timeout')
 			get_parent().add_child(server2)
 			get_parent().add_child(auth2)
+#			get_parent().get_node("Textures").queue_free()
 		"-x509":
 			print("generating SSl Cert...")
 #			get_tree().change_scene("res://x509Gen/X509Generator.tscn")

File diff suppressed because it is too large
+ 24 - 3
main.tscn


+ 5 - 5
playerphysics.gd

@@ -18,13 +18,13 @@ var vida = 100
 
 func damage(arg, id):
 	vida += arg
-	get_node('../..').hp_update(vida, name)
+	get_tree().get_nodes_in_group('server')[0].hp_update(vida, name)
 	if vida <= 0: 
 		queue_free()
 
 func regenhp(arg):
 	vida += arg
-	get_node('../..').hp_update(vida, name)
+	get_tree().get_nodes_in_group('server')[0].hp_update(vida, name)
 
 var sidebuffer = true
 
@@ -38,7 +38,7 @@ func melee():
 	attack_buffers.melee += 1
 	if fmod(attack_buffers.melee,45) == 0:
 		dmg()
-		get_node('../..').player_anim('melee',name)
+		get_tree().get_nodes_in_group('server')[0].player_anim('melee',name)
 
 func dmg(arg = Vector2.ZERO):
 	var dir = Vector2.ZERO
@@ -57,8 +57,8 @@ func _physics_process(delta):
 				instance.motion.x = 500 if sidebuffer else -500
 				instance.global_position = global_position + bulletoffset
 				instance.id = name
-				get_parent().get_parent().get_node('projectiles').add_child(instance)
-				get_node('../..').pshootanim(name)
+				get_tree().get_nodes_in_group('proj')[0].add_child(instance)
+				get_tree().get_nodes_in_group('server')[0].pshootanim(name)
 				aux_bullet = waitframes_bullet
 			
 	match input:

+ 3 - 2
playerphysics.tscn

@@ -4,11 +4,12 @@
 
 [sub_resource type="RectangleShape2D" id=1]
 
-[node name="KinematicBody2D" type="KinematicBody2D" groups=["players"]]
+[node name="KinematicBody2D" type="KinematicBody2D" groups=["player", "players"]]
 position = Vector2( 320, 180 )
 collision_layer = 10
-collision_mask = 0
+collision_mask = 2
 script = ExtResource( 1 )
+bulletoffset = Vector2( 0, -8 )
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 shape = SubResource( 1 )

Some files were not shown because too many files changed in this diff