diff --git a/Enemy/KnightBody.gd b/Enemy/KnightBody.gd new file mode 100644 index 0000000..ca43656 --- /dev/null +++ b/Enemy/KnightBody.gd @@ -0,0 +1,14 @@ +extends Area2D + + + +func _on_Body_area_entered(area): + var groups = area.get_groups() + if (groups.has("player")): + $"../".attack() + + +func _on_Body_area_exited(area): + var groups = area.get_groups() + if (groups.has("player")): + $"../".stop_attack() diff --git a/Enemy1.tscn b/Enemy1.tscn index 1f971ef..e25ee38 100644 --- a/Enemy1.tscn +++ b/Enemy1.tscn @@ -1,15 +1,15 @@ [gd_scene load_steps=14 format=2] -[ext_resource path="res://Enemy1.gd" type="Script" id=1] -[ext_resource path="res://KinematicEnemy1.gd" type="Script" id=2] -[ext_resource path="res://enemy/amg1_lf1.png" type="Texture" id=3] -[ext_resource path="res://enemy/amg1_lf2.png" type="Texture" id=4] -[ext_resource path="res://enemy/amg1_rt1.png" type="Texture" id=5] -[ext_resource path="res://enemy/amg1_rt2.png" type="Texture" id=6] -[ext_resource path="res://enemy/amg1_bk1.png" type="Texture" id=7] -[ext_resource path="res://enemy/amg1_bk2.png" type="Texture" id=8] -[ext_resource path="res://enemy/amg1_fr1.png" type="Texture" id=9] -[ext_resource path="res://enemy/amg1_fr2.png" type="Texture" id=10] +[ext_resource path="res://KinematicEnemy1.gd" type="Script" id=1] +[ext_resource path="res://enemy/amg1_lf1.png" type="Texture" id=2] +[ext_resource path="res://enemy/amg1_lf2.png" type="Texture" id=3] +[ext_resource path="res://enemy/amg1_rt1.png" type="Texture" id=4] +[ext_resource path="res://enemy/amg1_rt2.png" type="Texture" id=5] +[ext_resource path="res://enemy/amg1_bk1.png" type="Texture" id=6] +[ext_resource path="res://enemy/amg1_bk2.png" type="Texture" id=7] +[ext_resource path="res://enemy/amg1_fr1.png" type="Texture" id=8] +[ext_resource path="res://enemy/amg1_fr2.png" type="Texture" id=9] +[ext_resource path="res://Enemy/KnightBody.gd" type="Script" id=10] [sub_resource type="CapsuleShape2D" id=1] radius = 15.6866 @@ -17,39 +17,34 @@ height = 13.8927 [sub_resource type="SpriteFrames" id=2] animations = [ { -"frames": [ ExtResource( 3 ), ExtResource( 4 ) ], +"frames": [ ExtResource( 2 ), ExtResource( 3 ) ], "loop": true, "name": "LEFT", "speed": 5.0 }, { -"frames": [ ExtResource( 5 ), ExtResource( 6 ) ], +"frames": [ ExtResource( 4 ), ExtResource( 5 ) ], "loop": true, "name": "RIGHT", "speed": 5.0 }, { -"frames": [ ExtResource( 7 ), ExtResource( 8 ) ], +"frames": [ ExtResource( 6 ), ExtResource( 7 ) ], "loop": true, "name": "UP", "speed": 5.0 }, { -"frames": [ ExtResource( 9 ), ExtResource( 10 ) ], +"frames": [ ExtResource( 8 ), ExtResource( 9 ) ], "loop": true, "name": "DOWN", "speed": 5.0 } ] [sub_resource type="CircleShape2D" id=3] -radius = 246.873 +radius = 148.282 [node name="Enemy1" type="Node2D"] -[node name="Enemy1" type="RigidBody2D" parent="."] -mode = 2 -gravity_scale = 0.0 -script = ExtResource( 1 ) - [node name="KinematicEnemy1" type="KinematicBody2D" parent="."] -script = ExtResource( 2 ) +script = ExtResource( 1 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="KinematicEnemy1"] shape = SubResource( 1 ) @@ -58,9 +53,14 @@ shape = SubResource( 1 ) frames = SubResource( 2 ) animation = "RIGHT" -[node name="Body" type="Area2D" parent="KinematicEnemy1"] +[node name="Body" type="Area2D" parent="KinematicEnemy1" groups=[ +"noheavy", +]] +script = ExtResource( 10 ) [node name="CollisionShape2D2" type="CollisionShape2D" parent="KinematicEnemy1/Body"] position = Vector2( -0.71698, 0 ) shape = SubResource( 3 ) +[connection signal="area_entered" from="KinematicEnemy1/Body" to="KinematicEnemy1/Body" method="_on_Body_area_entered"] +[connection signal="area_exited" from="KinematicEnemy1/Body" to="KinematicEnemy1/Body" method="_on_Body_area_exited"] diff --git a/KinematicEnemy1.gd b/KinematicEnemy1.gd index d57a884..8a5fe69 100644 --- a/KinematicEnemy1.gd +++ b/KinematicEnemy1.gd @@ -1,18 +1,21 @@ extends KinematicBody2D +var IsPlayerNear = false +var SPEED = 120 +var PlayerPos = Vector2(0,0) -var SPEED = 150 +func _physics_process(delta): + if(IsPlayerNear == true): + PlayerPos.x = $"../../../../KinematicPlayer".global_position.x - self.global_position.x + PlayerPos.y = $"../../../../KinematicPlayer".global_position.y - self.global_position.y + var motion = PlayerPos.normalized() * SPEED + move_and_slide(motion, Vector2(0,0)) -func _physics_process(delta): - var MOVE = Vector2() - var body = get_node("Body").get_overlapping_bodies() +func attack(): + IsPlayerNear = true - if(body.size() != 0): - for tinge in body: - if(tinge.is_in_group("player")): - print('kek') - #if(tinge.global_position().x < self.global_position().x): - # print('good') +func stop_attack(): + IsPlayerNear = false \ No newline at end of file diff --git a/levels/FreeWorld.tscn b/levels/FreeWorld.tscn index 6e97284..c9c3215 100644 --- a/levels/FreeWorld.tscn +++ b/levels/FreeWorld.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://tiles/16x16-tiles.tres" type="TileSet" id=1] +[ext_resource path="res://Enemy1.tscn" type="PackedScene" id=2] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 17.1977, 4.73711 ) @@ -24,3 +25,6 @@ position = Vector2( 269, 238 ) position = Vector2( 0.252991, -14.933 ) shape = SubResource( 1 ) +[node name="Enemy1" parent="." instance=ExtResource( 2 )] +position = Vector2( 870.453, 419.867 ) + diff --git a/player/BulletArea.gd b/player/BulletArea.gd index 18c3a72..2b22047 100644 --- a/player/BulletArea.gd +++ b/player/BulletArea.gd @@ -35,7 +35,6 @@ func _on_BulletArea_area_entered(area): # Если в зону файрболл func _on_BulletArea_body_entered(body): var groups = body.get_groups() - if(!(groups.has("noheavy"))): remove_from_group("bullet") boom() diff --git a/player/KinematicPlayer.tscn b/player/KinematicPlayer.tscn index 8c89997..db5d294 100644 --- a/player/KinematicPlayer.tscn +++ b/player/KinematicPlayer.tscn @@ -212,6 +212,7 @@ tracks/0/keys = { extents = Vector2( 5.94487, 7.99627 ) [node name="KinematicPlayer" type="KinematicBody2D"] +position = Vector2( 655.295, 361.761 ) script = ExtResource( 1 ) [node name="anim" type="AnimationPlayer" parent="."] @@ -239,9 +240,10 @@ frame = 8 shape = SubResource( 13 ) [node name="Camera2D" type="Camera2D" parent="."] -visible = false +current = true zoom = Vector2( 0.6, 0.6 ) smoothing_enabled = true +editor_draw_drag_margin = true [node name="player1_area" type="Area2D" parent="." groups=[ "player", diff --git a/project.godot b/project.godot index a92aea9..3dcba89 100644 --- a/project.godot +++ b/project.godot @@ -49,4 +49,6 @@ ui_use={ [rendering] +quality/intended_usage/framebuffer_allocation.mobile=0 +quality/2d/use_pixel_snap=true environment/default_environment="res://default_env.tres"