Fix collision with player
This commit is contained in:
@@ -7,6 +7,8 @@ public partial class FireAtPlayer : Timer
|
||||
private BasicEnemy _enemy;
|
||||
[Export]
|
||||
private PackedScene _fireProjectile;
|
||||
[Export]
|
||||
private double _distanceToPlayer = 3;
|
||||
|
||||
public void OnFireAtPlayer()
|
||||
{
|
||||
@@ -15,10 +17,13 @@ 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 = new Vector3(0, _enemy.Rotation.Y, 0);
|
||||
projectile.Position = _enemy.Position;
|
||||
AddChild(projectile);
|
||||
if (_enemy.Position.DistanceTo(target.Position) < _distanceToPlayer)
|
||||
{
|
||||
var projectile = _fireProjectile.Instantiate<Projectile>() as EnemyBullet;
|
||||
projectile.Rotation = new Vector3(0, _enemy.Rotation.Y, 0);
|
||||
projectile.Position = _enemy.Position;
|
||||
AddChild(projectile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ skeleton = NodePath("")
|
||||
[node name="StaticBody3D" type="RigidBody3D" parent="."]
|
||||
transform = Transform3D(-1, 7.54979e-08, -7.54979e-08, -7.54979e-08, 0, 1, 7.54979e-08, 1, 0, -2.58153, 0, -1.66413)
|
||||
collision_layer = 0
|
||||
collision_mask = 8
|
||||
collision_mask = 72
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 1
|
||||
contact_monitor = true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=49 format=3 uid="uid://bt5rolsyjmx55"]
|
||||
[gd_scene load_steps=48 format=3 uid="uid://bt5rolsyjmx55"]
|
||||
|
||||
[ext_resource type="Script" path="res://Enemies/Scripts/MeleeEnemy.cs" id="1_50och"]
|
||||
[ext_resource type="PackedScene" uid="uid://b1j0g6ikmnibm" path="res://Enemies/HPComponent.tscn" id="2_1leby"]
|
||||
@@ -1174,13 +1174,16 @@ _data = {
|
||||
"Animation": SubResource("Animation_xyhqi")
|
||||
}
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_1kyxx"]
|
||||
size = Vector3(0.540778, 1.5012, 0.644069)
|
||||
|
||||
[node name="Melee Enemy" type="CharacterBody3D" node_paths=PackedStringArray("_hp") groups=["Enemy"]]
|
||||
[node name="Melee Enemy" type="RigidBody3D" node_paths=PackedStringArray("_hp") groups=["Enemy"]]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.251952, 0)
|
||||
collision_layer = 0
|
||||
collision_mask = 4
|
||||
collision_mask = 69
|
||||
gravity_scale = 0.0
|
||||
max_contacts_reported = 20
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
freeze = true
|
||||
freeze_mode = 1
|
||||
script = ExtResource("1_50och")
|
||||
_hp = NodePath("HP Component")
|
||||
|
||||
@@ -1250,16 +1253,4 @@ libraries = {
|
||||
[node name="HP Component" parent="." instance=ExtResource("2_1leby")]
|
||||
MaximumHP = 1
|
||||
|
||||
[node name="RigidBody3D" type="RigidBody3D" parent="."]
|
||||
collision_layer = 2
|
||||
collision_mask = 3
|
||||
gravity_scale = 0.0
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 20
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
freeze = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0726432, 0.732257, 0.127868)
|
||||
shape = SubResource("BoxShape3D_1kyxx")
|
||||
[connection signal="body_entered" from="." to="." method="OnPlayerHit"]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=60 format=3 uid="uid://dahp73fwld24h"]
|
||||
[gd_scene load_steps=59 format=3 uid="uid://dahp73fwld24h"]
|
||||
|
||||
[ext_resource type="Script" path="res://Enemies/Scripts/RangedEnemy.cs" id="1_01lvj"]
|
||||
[ext_resource type="PackedScene" uid="uid://rlxnnw4yay7e" path="res://Enemies/Attacks/EnemyBullet.tscn" id="3_qenx3"]
|
||||
@@ -891,29 +891,31 @@ _surfaces = [{
|
||||
blend_shape_mode = 0
|
||||
shadow_mesh = SubResource("ArrayMesh_j7wsk")
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_wt0ss"]
|
||||
size = Vector3(0.721796, 2.37333, 0.564825)
|
||||
|
||||
[node name="RangedEnemy" type="CharacterBody3D" node_paths=PackedStringArray("_hp") groups=["Enemy"]]
|
||||
[node name="RangedEnemy" type="RigidBody3D" node_paths=PackedStringArray("_hp") groups=["Enemy"]]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.257979, 0)
|
||||
collision_layer = 0
|
||||
collision_mask = 5
|
||||
collision_mask = 69
|
||||
max_contacts_reported = 20
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
freeze = true
|
||||
freeze_mode = 1
|
||||
script = ExtResource("1_01lvj")
|
||||
_hp = NodePath("HP Component")
|
||||
|
||||
[node name="Timer" type="Timer" parent="." node_paths=PackedStringArray("_enemy")]
|
||||
wait_time = 3.0
|
||||
autostart = true
|
||||
script = ExtResource("3_qt2md")
|
||||
_enemy = NodePath("..")
|
||||
_fireProjectile = ExtResource("3_qenx3")
|
||||
_distanceToPlayer = 5.0
|
||||
|
||||
[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")
|
||||
|
||||
[node name="ranged enemy" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
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)
|
||||
@@ -1062,19 +1064,5 @@ skeleton = NodePath("")
|
||||
[node name="HP Component" parent="." instance=ExtResource("4_1vt55")]
|
||||
MaximumHP = 1
|
||||
|
||||
[node name="RigidBody3D" type="RigidBody3D" parent="."]
|
||||
collision_layer = 0
|
||||
collision_mask = 3
|
||||
gravity_scale = 0.0
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 20
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
freeze = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0734575, 0.791657, 0)
|
||||
shape = SubResource("BoxShape3D_wt0ss")
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="OnPlayerHit"]
|
||||
[connection signal="timeout" from="Timer" to="Timer" method="OnFireAtPlayer"]
|
||||
[connection signal="body_entered" from="RigidBody3D" to="." method="OnPlayerHit"]
|
||||
|
||||
@@ -10,10 +10,18 @@ public partial class GodCircuit : Node3D
|
||||
|
||||
private void OnHit(Node3D node)
|
||||
{
|
||||
GD.Print("Hit");
|
||||
_animationPlayer.Play("OnHit");
|
||||
var hpComponent = GetNode<HealthPoints>("HP Component");
|
||||
hpComponent.TakeDamage(800000);
|
||||
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, node);
|
||||
}
|
||||
else
|
||||
{
|
||||
GD.Print("Hit");
|
||||
_animationPlayer.Play("OnHit");
|
||||
var hpComponent = GetNode<HealthPoints>("HP Component");
|
||||
hpComponent.TakeDamage(800000);
|
||||
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,9 @@ public partial class MeleeEnemy : BasicEnemy
|
||||
{
|
||||
[Export]
|
||||
private float _speed = 0.4f;
|
||||
private bool _targetingPlayer = false;
|
||||
[Export]
|
||||
private double _distanceToPlayer = 3;
|
||||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
@@ -13,8 +16,12 @@ public partial class MeleeEnemy : BasicEnemy
|
||||
{
|
||||
var convertedPlayers = players.Select(x => (Node3D)x);
|
||||
var target = convertedPlayers.OrderBy(x => Position.DistanceTo(x.Position)).FirstOrDefault();
|
||||
Position = Position.MoveToward(target.Position, _speed * (float)delta);
|
||||
LookAt(-target.Position, Vector3.Up);
|
||||
if (_targetingPlayer || Position.DistanceTo(target.Position) < _distanceToPlayer)
|
||||
{
|
||||
Position = Position.MoveToward(target.Position, _speed * (float)delta);
|
||||
LookAt(-target.Position, Vector3.Up);
|
||||
_targetingPlayer = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@ curve = SubResource("Curve3D_bch55")
|
||||
script = ExtResource("1_ovnwu")
|
||||
Cooldown = 1.0
|
||||
_soundEffect = ExtResource("2_lofnw")
|
||||
_projectileSpeed = 5.0
|
||||
_projectileSpeed = 3.0
|
||||
|
||||
[node name="PathFollow3D" type="PathFollow3D" parent="Forward Shot"]
|
||||
transform = Transform3D(0.999997, 0, -0.00207308, 0, 1, 0, 0.00207308, 0, 0.999997, -0.00347188, 1, 0.533723)
|
||||
@@ -66,7 +66,7 @@ curve = SubResource("Curve3D_ciqkc")
|
||||
script = ExtResource("1_ovnwu")
|
||||
Cooldown = 1.0
|
||||
_soundEffect = ExtResource("2_lofnw")
|
||||
_projectileSpeed = 5.0
|
||||
_projectileSpeed = 3.0
|
||||
|
||||
[node name="PathFollow3D" type="PathFollow3D" parent="Backward Shot"]
|
||||
transform = Transform3D(0.999997, 0, -0.00207308, 0, 1, 0, 0.00207308, 0, 0.999997, -0.00347188, 1, 0.533723)
|
||||
|
||||
@@ -97,4 +97,4 @@ stream = ExtResource("2_jeoco")
|
||||
autoplay = true
|
||||
|
||||
[connection signal="body_entered" from="Forward Shot/PathFollow3D/HitBox" to="Forward Shot" method="OnProjectileHit"]
|
||||
[connection signal="body_entered" from="Backward Shot/PathFollow3D/HitBox" to="Forward Shot" method="OnProjectileHit"]
|
||||
[connection signal="body_entered" from="Backward Shot/PathFollow3D/HitBox" to="Backward Shot" method="OnProjectileHit"]
|
||||
|
||||
@@ -216,7 +216,7 @@ size = Vector3(0.856928, 5.87942, 0.82877)
|
||||
|
||||
[node name="Capricorn" type="CharacterBody3D" groups=["Player"]]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.408962, 0)
|
||||
collision_layer = 18
|
||||
collision_layer = 82
|
||||
motion_mode = 1
|
||||
script = ExtResource("1_aqn5t")
|
||||
_fireProjectile = ExtResource("2_e6qos")
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
[sub_resource type="Curve3D" id="Curve3D_do6j1"]
|
||||
_data = {
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.008, 0, -5),
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2),
|
||||
"tilts": PackedFloat32Array(0, 0)
|
||||
}
|
||||
point_count = 2
|
||||
|
||||
@@ -10,11 +10,12 @@ size = Vector3(1.52195, 15.0934, 1)
|
||||
|
||||
[node name="Pisces" type="CharacterBody3D" groups=["Player"]]
|
||||
transform = Transform3D(0.33, 0, 0, 0, 0.33, 0, 0, 0, 0.33, 0, 0.332056, 0)
|
||||
collision_layer = 18
|
||||
collision_layer = 82
|
||||
motion_mode = 1
|
||||
script = ExtResource("1_gp8nm")
|
||||
_fireProjectile = ExtResource("2_rsvhh")
|
||||
_altFireProjectile = ExtResource("3_5m8tq")
|
||||
_speed = 2.0
|
||||
|
||||
[node name="Pivot" type="Node3D" parent="."]
|
||||
|
||||
|
||||
@@ -603,12 +603,13 @@ radius = 0.25
|
||||
|
||||
[node name="Sagittarius" type="CharacterBody3D" groups=["Player"]]
|
||||
transform = Transform3D(0.9, 0, 0, 0, 0.9, 0, 0, 0, 0.9, 0, 0.559088, 0)
|
||||
collision_layer = 18
|
||||
collision_layer = 82
|
||||
motion_mode = 1
|
||||
wall_min_slide_angle = 3.14159
|
||||
script = ExtResource("1_s1hsr")
|
||||
_fireProjectile = ExtResource("2_c3ma7")
|
||||
_altFireProjectile = ExtResource("2_c3ma7")
|
||||
_speed = 2.25
|
||||
|
||||
[node name="Pivot" type="Node3D" parent="."]
|
||||
|
||||
|
||||
@@ -10,12 +10,13 @@ size = Vector3(0.8, 3, 0.8)
|
||||
|
||||
[node name="Scorpio" type="CharacterBody3D" groups=["Player"]]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55696, 0)
|
||||
collision_layer = 18
|
||||
collision_layer = 82
|
||||
motion_mode = 1
|
||||
slide_on_ceiling = false
|
||||
script = ExtResource("1_gw30u")
|
||||
_fireProjectile = ExtResource("2_uayjr")
|
||||
_altFireProjectile = ExtResource("3_tw078")
|
||||
_speed = 2.5
|
||||
|
||||
[node name="Pivot" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.496155, 0)
|
||||
|
||||
@@ -128,7 +128,7 @@ p2_altfire={
|
||||
3d_physics/layer_4="BossHit"
|
||||
3d_physics/layer_5="Area Exit"
|
||||
3d_physics/layer_6="BreakableObstacle"
|
||||
3d_physics/layer_7="Layer 7"
|
||||
3d_physics/layer_7="EnemyCollide"
|
||||
3d_physics/layer_9="ProjectileToWalls"
|
||||
|
||||
[physics]
|
||||
|
||||
Reference in New Issue
Block a user