123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- [gd_scene load_steps=8 format=2]
- [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=4]
- [sub_resource type="RectangleShape2D" id=2]
- extents = Vector2( 320, 100 )
- [node name="Enemy" type="KinematicBody2D" groups=["enemy"]]
- collision_layer = 12
- collision_mask = 0
- script = SubResource( 5 )
- [node name="damage_enemy" type="Area2D" parent="."]
- collision_layer = 0
- collision_mask = 2147483650
- monitorable = false
- script = SubResource( 6 )
- [node name="CollisionShape2D" type="CollisionShape2D" parent="damage_enemy"]
- shape = SubResource( 1 )
- disabled = true
- [node name="damage_enemy2" type="Area2D" parent="."]
- collision_layer = 0
- collision_mask = 2147483650
- monitorable = false
- script = SubResource( 7 )
- [node name="CollisionShape2D" type="CollisionShape2D" parent="damage_enemy2"]
- shape = SubResource( 3 )
- [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
- shape = SubResource( 4 )
- [node name="Area2D" type="Area2D" parent="."]
- collision_layer = 0
- 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"]
|