Fix hitboxes, add collision detection to maps

This commit is contained in:
2023-09-04 18:07:58 -07:00
parent 316651f409
commit 59a77d084c
14 changed files with 279 additions and 38 deletions

View File

@@ -2,8 +2,10 @@ using Godot;
public partial class Character : CharacterBody3D
{
public void OnHit(Node3D node)
private GameManager _gameManager;
public override void _Ready()
{
QueueFree();
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
}
}

View File

@@ -1,4 +1,5 @@
using Godot;
using System.Linq;
public partial class Character1 : Character
{
@@ -76,4 +77,9 @@ public partial class Character1 : Character
await ToSignal(GetTree().CreateTimer(projectile.Cooldown), "timeout");
CanShoot = true;
}
public void OnHit(Node3D node)
{
_gameManager.CallDeferred(GameManager.MethodName.RemoveCharacter, this);
}
}

View File

@@ -76,4 +76,9 @@ public partial class Character2 : Character
await ToSignal(GetTree().CreateTimer(projectile.Cooldown), "timeout");
CanShoot = true;
}
public void OnHit(Node3D node)
{
_gameManager.RemoveCharacter(this);
}
}

View File

@@ -75,6 +75,32 @@ public partial class GameManager : Node
}
}
public void RemoveCharacter(Character1 character)
{
Players.ElementAt(0).CharactersLeftOnStage.Remove(character);
GetTree().Root.RemoveChild(character);
GD.Print(Players.ElementAt(0).CharactersLeftOnStage.Select(x => x.Name).ToArray());
Players.ElementAt(0)._characterIndex = 0;
if (Players.ElementAt(0).CharactersLeftOnStage.Any())
EmitSignal(SignalName.ReselectCharacter, Players.ElementAt(0));
}
public void RemoveCharacter(Character2 character)
{
Players.ElementAt(1).CharactersLeftOnStage.Remove(character);
GetTree().Root.RemoveChild(character);
GD.Print(Players.ElementAt(1).CharactersLeftOnStage.Select(x => x.Name).ToArray());
Players.ElementAt(1)._characterIndex = 0;
if (Players.ElementAt(1).CharactersLeftOnStage.Any())
EmitSignal(SignalName.ReselectCharacter, Players.ElementAt(1));
}
public void RemoveCharacterAndAddToExit(Character1 character)
{
P1CharactersOut.Add(character);

View File

@@ -22,7 +22,6 @@ public partial class Player : Node3D
foreach (var character in PlayableCharacterScenes)
{
var instance = character.Instantiate();
GD.Print(instance);
CharactersLeftOnStage.Add((Character)instance);
}
}