Fix range enemy rotation

This commit is contained in:
2023-09-06 17:59:16 -07:00
parent aac5fbd297
commit f4c0944afa
5 changed files with 175 additions and 165 deletions

View File

@@ -22,6 +22,7 @@ continuous_cd = true
max_contacts_reported = 10
contact_monitor = true
can_sleep = false
lock_rotation = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"]
transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0.0111055, 1.02602, 0)

View File

@@ -4,7 +4,7 @@ using System.Linq;
public partial class FireAtPlayer : Timer
{
[Export]
private Area3D _enemy;
private StaticBody3D _enemy;
[Export]
private PackedScene _fireProjectile;
@@ -16,7 +16,7 @@ public partial class FireAtPlayer : Timer
var convertedPlayers = players.Select(x => (Node3D)x);
var target = convertedPlayers.OrderBy(x => _enemy.Position.DistanceTo(x.Position)).FirstOrDefault();
var projectile = _fireProjectile.Instantiate<Projectile>() as EnemyBullet;
projectile.Rotation = _enemy.Rotation;
projectile.Rotation = new Vector3(0, _enemy.Rotation.Y, 0);
projectile.Position = _enemy.Position;
GetParent().AddChild(projectile);
}

View File

@@ -1183,6 +1183,7 @@ script = ExtResource("1_50och")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.251952, 0)
collision_layer = 0
collision_mask = 0
axis_lock_angular_x = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="CharacterBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0840461, 0.475385, 0.143401)

View File

@@ -4,9 +4,6 @@
[ext_resource type="PackedScene" uid="uid://rlxnnw4yay7e" path="res://Enemies/Attacks/EnemyBullet.tscn" id="3_qenx3"]
[ext_resource type="Script" path="res://Enemies/Attacks/FireAtPlayer.cs" id="3_qt2md"]
[sub_resource type="BoxShape3D" id="BoxShape3D_dm3u7"]
size = Vector3(0.721796, 2.18529, 0.564825)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cr37n"]
resource_name = "Material.002"
cull_mode = 2
@@ -890,171 +887,182 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_j7wsk")
[node name="RangedEnemy" type="Node3D" groups=["Enemy"]]
script = ExtResource("1_01lvj")
[sub_resource type="BoxShape3D" id="BoxShape3D_dm3u7"]
size = Vector3(0.721796, 2.37333, 0.564825)
[node name="Area3D" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
collision_layer = 0
[node name="RangedEnemy" type="CharacterBody3D" groups=["Enemy"]]
collision_layer = 4098
collision_mask = 4098
[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.113206, 0.5, 0)
shape = SubResource("BoxShape3D_dm3u7")
[node name="ranged enemy" type="Node3D" parent="Area3D"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
[node name="Cube" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_q32da")
skeleton = NodePath("")
[node name="Plane" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(-0.0100222, 0.0018531, -0.000882675, 1.93522e-05, -0.00431383, -0.00927625, -0.00205249, -0.00908929, 0.00422261, -0.303114, 0.427881, 0.058823)
cast_shadow = 0
mesh = SubResource("ArrayMesh_u3ad8")
skeleton = NodePath("")
[node name="Cube001" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.315871, -0.0694096, -0.000752944, 0.0682386, 0.311148, -0.0558839, 0.0127182, 0.0544227, 0.318542, -0.0773843, 0.835929, -0.0333594)
cast_shadow = 0
mesh = SubResource("ArrayMesh_rm34g")
skeleton = NodePath("")
[node name="Cube002" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.313807, -0.0597582, 0.0504638, 0.0682386, 0.311148, -0.0558839, -0.0382248, 0.0648728, 0.31452, -0.0636578, 0.633983, -0.0944303)
cast_shadow = 0
mesh = SubResource("ArrayMesh_0bt4x")
skeleton = NodePath("")
[node name="Cube003" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.313807, -0.0597582, 0.0504638, 0.0682386, 0.311148, -0.0558839, -0.0382248, 0.0648728, 0.31452, -0.0655749, 0.637828, -0.0946047)
cast_shadow = 0
mesh = SubResource("ArrayMesh_8yxbn")
skeleton = NodePath("")
[node name="Cube004" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.313807, -0.0597582, 0.0504638, 0.0682386, 0.311148, -0.0558839, -0.0382248, 0.0648728, 0.31452, -0.0655749, 0.637828, -0.0946047)
cast_shadow = 0
mesh = SubResource("ArrayMesh_15lqi")
skeleton = NodePath("")
[node name="Cube005" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.305187, -0.0854223, 0.0644708, 0.0815859, 0.311789, 0.0269073, -0.0692616, -0.00912739, 0.315772, -0.0531487, 0.661378, -0.0700054)
cast_shadow = 0
mesh = SubResource("ArrayMesh_mpb1j")
skeleton = NodePath("")
[node name="Cube006" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.313807, -0.0597582, 0.0504638, 0.0682386, 0.311148, -0.0558839, -0.0382248, 0.0648728, 0.31452, -0.0655749, 0.637828, -0.0946047)
cast_shadow = 0
mesh = SubResource("ArrayMesh_mcinf")
skeleton = NodePath("")
[node name="Cube008" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_pmc1t")
skeleton = NodePath("")
[node name="Cube009" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.313807, -0.0597582, 0.0504638, 0.0682386, 0.311148, -0.0558839, -0.0382248, 0.0648728, 0.31452, -0.0684862, 0.799624, -0.0750265)
cast_shadow = 0
mesh = SubResource("ArrayMesh_gtkhd")
skeleton = NodePath("")
[node name="Cube010" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_trp2a")
skeleton = NodePath("")
[node name="Cube012" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_25adi")
skeleton = NodePath("")
[node name="Cube014" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.386719, -0.0654828, -0.0060564, 0.0657464, 0.385777, 0.0270154, 0.00144638, -0.0276482, 0.391293, -0.352872, 0.654756, -0.0707455)
cast_shadow = 0
mesh = SubResource("ArrayMesh_u67jf")
skeleton = NodePath("")
[node name="Cube019" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_ariha")
skeleton = NodePath("")
[node name="Cube020" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_xyipj")
skeleton = NodePath("")
[node name="Cube021" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_jo33y")
skeleton = NodePath("")
[node name="Cube022" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_7kmmw")
skeleton = NodePath("")
[node name="Cube026" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_vfj0q")
skeleton = NodePath("")
[node name="Circle" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(-0.0166754, -0.00145308, 0.00157151, -0.00158678, 0.000108831, -0.0167367, 0.00143639, -0.0167489, -0.000245091, -0.0910357, 0.761053, 0.00444521)
cast_shadow = 0
mesh = SubResource("ArrayMesh_rlqqm")
skeleton = NodePath("")
[node name="Circle001" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.0164801, 0.00292982, 0.00157151, 0.001504, 0.000517407, -0.0167367, 0.00296504, -0.0165468, -0.000245089, -0.0447078, 0.770397, 0.00533548)
cast_shadow = 0
mesh = SubResource("ArrayMesh_sjkuu")
skeleton = NodePath("")
[node name="Cube007" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_ad76t")
skeleton = NodePath("")
[node name="Cube011" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_dcy7l")
skeleton = NodePath("")
[node name="Cube013" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_tup6f")
skeleton = NodePath("")
[node name="Cube015" type="MeshInstance3D" parent="Area3D/ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_lu7e3")
skeleton = NodePath("")
axis_lock_linear_x = true
axis_lock_linear_y = true
axis_lock_linear_z = true
axis_lock_angular_x = true
axis_lock_angular_z = true
script = ExtResource("1_01lvj")
[node name="Timer" type="Timer" parent="." node_paths=PackedStringArray("_enemy")]
wait_time = 3.0
autostart = true
script = ExtResource("3_qt2md")
_enemy = NodePath("../Area3D")
_enemy = NodePath("../StaticBody3D")
_fireProjectile = ExtResource("3_qenx3")
[connection signal="body_entered" from="Area3D" to="." method="OnEnemyHit"]
[node name="ranged enemy" type="Node3D" parent="."]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0.5, 0)
[node name="Cube" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_q32da")
skeleton = NodePath("")
[node name="Plane" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(-0.0100222, 0.0018531, -0.000882675, 1.93522e-05, -0.00431383, -0.00927625, -0.00205249, -0.00908929, 0.00422261, -0.303114, 0.427881, 0.058823)
cast_shadow = 0
mesh = SubResource("ArrayMesh_u3ad8")
skeleton = NodePath("")
[node name="Cube001" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.315871, -0.0694096, -0.000752944, 0.0682386, 0.311148, -0.0558839, 0.0127182, 0.0544227, 0.318542, -0.0773843, 0.835929, -0.0333594)
cast_shadow = 0
mesh = SubResource("ArrayMesh_rm34g")
skeleton = NodePath("")
[node name="Cube002" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.313807, -0.0597582, 0.0504638, 0.0682386, 0.311148, -0.0558839, -0.0382248, 0.0648728, 0.31452, -0.0636578, 0.633983, -0.0944303)
cast_shadow = 0
mesh = SubResource("ArrayMesh_0bt4x")
skeleton = NodePath("")
[node name="Cube003" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.313807, -0.0597582, 0.0504638, 0.0682386, 0.311148, -0.0558839, -0.0382248, 0.0648728, 0.31452, -0.0655749, 0.637828, -0.0946047)
cast_shadow = 0
mesh = SubResource("ArrayMesh_8yxbn")
skeleton = NodePath("")
[node name="Cube004" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.313807, -0.0597582, 0.0504638, 0.0682386, 0.311148, -0.0558839, -0.0382248, 0.0648728, 0.31452, -0.0655749, 0.637828, -0.0946047)
cast_shadow = 0
mesh = SubResource("ArrayMesh_15lqi")
skeleton = NodePath("")
[node name="Cube005" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.305187, -0.0854223, 0.0644708, 0.0815859, 0.311789, 0.0269073, -0.0692616, -0.00912739, 0.315772, -0.0531487, 0.661378, -0.0700054)
cast_shadow = 0
mesh = SubResource("ArrayMesh_mpb1j")
skeleton = NodePath("")
[node name="Cube006" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.313807, -0.0597582, 0.0504638, 0.0682386, 0.311148, -0.0558839, -0.0382248, 0.0648728, 0.31452, -0.0655749, 0.637828, -0.0946047)
cast_shadow = 0
mesh = SubResource("ArrayMesh_mcinf")
skeleton = NodePath("")
[node name="Cube008" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_pmc1t")
skeleton = NodePath("")
[node name="Cube009" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.313807, -0.0597582, 0.0504638, 0.0682386, 0.311148, -0.0558839, -0.0382248, 0.0648728, 0.31452, -0.0684862, 0.799624, -0.0750265)
cast_shadow = 0
mesh = SubResource("ArrayMesh_gtkhd")
skeleton = NodePath("")
[node name="Cube010" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_trp2a")
skeleton = NodePath("")
[node name="Cube012" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_25adi")
skeleton = NodePath("")
[node name="Cube014" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.386719, -0.0654828, -0.0060564, 0.0657464, 0.385777, 0.0270154, 0.00144638, -0.0276482, 0.391293, -0.352872, 0.654756, -0.0707455)
cast_shadow = 0
mesh = SubResource("ArrayMesh_u67jf")
skeleton = NodePath("")
[node name="Cube019" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_ariha")
skeleton = NodePath("")
[node name="Cube020" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_xyipj")
skeleton = NodePath("")
[node name="Cube021" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_jo33y")
skeleton = NodePath("")
[node name="Cube022" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_7kmmw")
skeleton = NodePath("")
[node name="Cube026" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_vfj0q")
skeleton = NodePath("")
[node name="Circle" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(-0.0166754, -0.00145308, 0.00157151, -0.00158678, 0.000108831, -0.0167367, 0.00143639, -0.0167489, -0.000245091, -0.0910357, 0.761053, 0.00444521)
cast_shadow = 0
mesh = SubResource("ArrayMesh_rlqqm")
skeleton = NodePath("")
[node name="Circle001" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.0164801, 0.00292982, 0.00157151, 0.001504, 0.000517407, -0.0167367, 0.00296504, -0.0165468, -0.000245089, -0.0447078, 0.770397, 0.00533548)
cast_shadow = 0
mesh = SubResource("ArrayMesh_sjkuu")
skeleton = NodePath("")
[node name="Cube007" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_ad76t")
skeleton = NodePath("")
[node name="Cube011" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_dcy7l")
skeleton = NodePath("")
[node name="Cube013" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_tup6f")
skeleton = NodePath("")
[node name="Cube015" type="MeshInstance3D" parent="ranged enemy"]
transform = Transform3D(0.323408, 0, 0, 0, 0.323408, 0, 0, 0, 0.323408, -0.0862004, 0.632917, -0.0732053)
cast_shadow = 0
mesh = SubResource("ArrayMesh_lu7e3")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.113206, 0.857215, 0)
collision_mask = 4098
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
shape = SubResource("BoxShape3D_dm3u7")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0714533, 0.795379, 0.0138905)
shape = SubResource("BoxShape3D_dm3u7")
[connection signal="timeout" from="Timer" to="Timer" method="OnFireAtPlayer"]

View File

@@ -10,8 +10,8 @@ public partial class RangedEnemy : BasicEnemy
{
var convertedPlayers = players.Select(x => (Node3D)x);
var target = convertedPlayers.OrderBy(x => Position.DistanceTo(x.Position)).FirstOrDefault();
var area = GetChildren().OfType<Area3D>().Single();
area.LookAt(new Vector3(target.Position.X, 0, target.Position.Z), Vector3.Up);
var hitBox = GetChildren().OfType<StaticBody3D>().Single();
hitBox.LookAt(target.Position, Vector3.Up);
}
}
}