private Sprite UnitTableCell(string label, UnitSpecies species, Sprite sprite)
    {
        EditorGUILayout.LabelField(label, EditorStyles.boldLabel);
        var newSprite = (Sprite)EditorGUILayout.ObjectField("Спрайт", sprite, typeof(Sprite), false);

        EditorGUILayout.BeginHorizontal();
        GUILayout.Label("Урон");
        UnitScript.UnitsCharacteristics[species].LifeDamage = EditorGUILayout.IntField(UnitScript.UnitsCharacteristics[species].LifeDamage);
        GUILayout.Label("Сбор");
        UnitScript.UnitsCharacteristics[species].AntiBodyDamage = EditorGUILayout.IntField(UnitScript.UnitsCharacteristics[species].AntiBodyDamage);
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.BeginHorizontal();
        GUILayout.Label("Скорость");
        UnitScript.UnitsCharacteristics[species].Speed = EditorGUILayout.IntField(UnitScript.UnitsCharacteristics[species].Speed);
        GUILayout.Label("Цена");
        UnitScript.UnitsCharacteristics[species].Cost = EditorGUILayout.IntField(UnitScript.UnitsCharacteristics[species].Cost);
        EditorGUILayout.EndHorizontal();
        GUILayout.Space(10);
        return(newSprite);
    }
    public void Initialize(UnitSpecies unit, GameObject threat)
    {
        GetComponent <SpriteRenderer>().sprite = unit switch
        {
            UnitSpecies.Macrophage => macrophageSprite,
            UnitSpecies.DendriticCell => dendriticCellSprite,
            UnitSpecies.Neutrophil => neutrophilSprite,
            UnitSpecies.NkCell => nKCellSprite,
            UnitSpecies.Killer => tKillerSprite,
            _ => throw new ArgumentOutOfRangeException(nameof(unit), unit, null)
        };
        UnitData     = UnitsCharacteristics[unit];
        targetThreat = threat;
        var threatScript = targetThreat.GetComponent <Threat>();

        threatScript.AttackUnits.Add(gameObject);
        path = threatScript.PathData.PathPoints.GetEnumerator();
        if (path.MoveNext())
        {
            currentTarget = path.Current;
        }
        initialized = true;
    }
}
Beispiel #3
0
        // 유닛 생성 시스템
        public Unit(UnitAlliance alliance, UnitSpecies species = UnitSpecies.NULL, int lv = 1)
        {
            Seed     = UnityEngine.Random.Range(0, 10000);
            Alliance = alliance;

            if (species == UnitSpecies.NULL)
            {
                Species = (UnitSpecies)(Seed % 5); // 0 ~ 3
            }
            else
            {
                Species = species;
            }

            Modifier = (UnitModifier)(Seed % 6);

            Name         = Data.GetRandomName(Seed);
            SpriteNumber = Data.SpeciesToSpriteNumbers[Species][Seed % Data.SpeciesToSpriteNumbers[Species].Count];
            InColor      = new Color(0.9f, 0.9f, 0.9f);
            OutColor     = Color.clear;

            Common.Command.AddSkill(this, new Skills.Move.Pawn());
            Common.Command.AddSkill(this, new Skills.Basic.Fireball());
            Common.Command.AddSkill(this, new Skills.Basic.Heal());
            Common.Command.AddSkill(this, new Skills.Basic.Scratch());

            // 인간형 초기 스텟
            if (Species == UnitSpecies.Human)
            {
                MaxHP    = 35;
                Strength = 10;
                Agility  = 10;
                Mobility = 3;
                CriRate  = 10;
            }
            else if (Species == UnitSpecies.SmallBeast)
            {
                MaxHP    = 20;
                Strength = 12;
                Agility  = 11;
                Mobility = 4;
                CriRate  = 11;
            }
            else if (Species == UnitSpecies.MediumBeast)
            {
                MaxHP    = 30;
                Strength = 12;
                Agility  = 10;
                Mobility = 3;
                CriRate  = 11;
            }
            else if (Species == UnitSpecies.LargeBeast)
            {
                MaxHP    = 50;
                Strength = 15;
                Agility  = 12;
                Mobility = 2;
                CriRate  = 11;
            }

            Level = lv;

            CurEXP  = 0;
            NextEXP = 10 * Level * (Level + 5);
        }