Beispiel #1
0
    //eventually public if fabrics will call CreateUnitAt().
    private void CreateUnitAt(int x, int y, UnitType.UnitArcheType unitType, Player p)
    {
        //instantiate at x, y as UnitArcheType unitType such as Archer, Infantry or others:
        UnitType   ut = GetUnitTypeBy(unitType);
        GameObject go = Instantiate(ut.UnitVisualPrefab, new Vector3(x, y, 0),
                                    Quaternion.identity) as GameObject;

        go.transform.SetParent(_unitsHolder);

        // Initialize Unit script.
        Unit unitScript = go.GetComponent <Unit>();

        unitScript.TileX          = (int)go.transform.position.x;
        unitScript.TileY          = (int)go.transform.position.y;
        unitScript.OwningPlayerID = p.PlayerID;
        unitScript.Unit_Type      = unitType;
        unitScript.IsRangedUnit   = ut.MaxAttackRange > 1;
        unitScript.Map            = BoardManager;
        unitScript.CurrentHealth  = ut.MaxHealth;
        unitScript.Crosshair      = go.transform.Find("Crosshair").gameObject;    //GO -> Transform -> child's transform -> child GameObject.
        //Initialize ClickOnUnitHandler.
        go.GetComponent <ClickOnUnitHandler>().UnitManager = this;
        //colouring the Units
        go.GetComponentInChildren <SpriteRenderer>().material.color = p.UnitColouring;
        // How to change sprite colouring: https://www.youtube.com/watch?v=J66UkLJHzCY
        // GetComponent functions overview: https://docs.unity3d.com/ScriptReference/Component.html

        p.AllUnits.Add(go);
    }
Beispiel #2
0
 private UnitType GetUnitTypeBy(UnitType.UnitArcheType uat)
 {
     return(UnitTypes[(int)uat]);
 }