Fix hitboxes, add collision detection to maps
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user