Almost Final Version
This commit is contained in:
@ -38,32 +38,30 @@ public class CharacterFactory : MonoBehaviour
|
||||
throw new System.ArgumentException("Can be only one human player");
|
||||
|
||||
for (int i = 0; i < attcNum - humanAtc; i++)
|
||||
InstanciateEntity(Team.Attackers, TypeAI.D0DiskAI,
|
||||
InstantiateEntity(Team.Attackers, TypeAI.D0DiskAI,
|
||||
spawnPointsForAttackersTeam[Random.Range(0, spawnPointsForAttackersTeam.Count)]);
|
||||
for (int i = 0; i < defNum - humanDef; i++)
|
||||
InstanciateEntity(Team.Defenders, TypeAI.D0DiskAI,
|
||||
InstantiateEntity(Team.Defenders, TypeAI.D0DiskAI,
|
||||
spawnPointsForDefendersTeam[Random.Range(0, spawnPointsForDefendersTeam.Count)]);
|
||||
if (humanAtc == 1)
|
||||
InstanciateEntity(Team.Attackers, TypeAI.HumanAI,
|
||||
InstantiateEntity(Team.Attackers, TypeAI.HumanAI,
|
||||
spawnPointsForAttackersTeam[Random.Range(0, spawnPointsForAttackersTeam.Count)]);
|
||||
if (humanDef == 1)
|
||||
InstanciateEntity(Team.Defenders, TypeAI.HumanAI,
|
||||
InstantiateEntity(Team.Defenders, TypeAI.HumanAI,
|
||||
spawnPointsForDefendersTeam[Random.Range(0, spawnPointsForDefendersTeam.Count)]);
|
||||
|
||||
GameManager.OnResetScene += ResetCharacters;
|
||||
}
|
||||
|
||||
private void InstanciateEntity(Team team, TypeAI typeAi, NavPoint spawnPoint)
|
||||
private void InstantiateEntity(Team team, TypeAI typeAi, NavPoint spawnPoint)
|
||||
{
|
||||
var gameobject = GameObject.Instantiate(
|
||||
typeAi == TypeAI.HumanAI ? PlayerPrefab : AIPrefab,
|
||||
spawnPoint.Position,
|
||||
Quaternion.identity);
|
||||
ApplyMaterial(team, gameobject);
|
||||
gameobject.SetActive(true);
|
||||
if (team == Team.Attackers)
|
||||
gameObject.tag = "Attacker";
|
||||
else
|
||||
gameObject.tag = "Defender";
|
||||
gameObject.tag = team == Team.Attackers ? "Attacker" : "Defender";
|
||||
|
||||
if (typeAi == TypeAI.HumanAI)
|
||||
{
|
||||
@ -73,13 +71,35 @@ public class CharacterFactory : MonoBehaviour
|
||||
else
|
||||
{
|
||||
var npc = gameobject.GetComponent<NPC>();
|
||||
if (team == Team.Attackers)
|
||||
GameManager._attackersTeam.RegisterAgent(npc);
|
||||
else
|
||||
{
|
||||
GameManager._defendersTeam.RegisterAgent(npc);
|
||||
}
|
||||
npc.GetCharacter.Team = team;
|
||||
npc.SetModel(team.ToString(), ScriptableObject.CreateInstance<NNModel>(), InferenceDevice.Default );
|
||||
npc.SetModel(team.ToString(), null, InferenceDevice.Default );
|
||||
gameobject.GetComponent<MovementController>().PointStartID = spawnPoint.PointId;
|
||||
bots.Add(gameobject);
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplyMaterial(Team team, GameObject go)
|
||||
{
|
||||
var mat = team == Team.Attackers
|
||||
? SettingsReader.Instance.GetSettings.atcMaterial
|
||||
: SettingsReader.Instance.GetSettings.defMaterial;
|
||||
|
||||
for (var i = 0; i < go.transform.childCount; i++)
|
||||
{
|
||||
if (go.transform.GetChild(i)
|
||||
.TryGetComponent<SkinnedMeshRenderer>(out var skin))
|
||||
{
|
||||
skin.material = mat;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ReSpawn(ICharacter character, ref Vector3 pos, ref int startPointId)
|
||||
{
|
||||
character.ResetCharacter();
|
||||
|
Reference in New Issue
Block a user