// Update is called once per frame
 void Update()
 {
     if ((!flip && bone.transform.position.x - relative.position.x > threshold) || (flip && bone.transform.position.x - relative.position.x < -1 * threshold))
     {
         sr.SetCategoryAndLabel(sr.GetCategory(), "Side");
     }
     else
     {
         sr.SetCategoryAndLabel(sr.GetCategory(), "Front");
     }
 }
Beispiel #2
0
    public void ChangeToolMode(ToolCode toolCode, bool toolMode)
    {
        if (toolCode == ToolCode.Default)
        {
            toolCode = defaultTool;
        }
        ToolEquipData toolData = toolsEquipData.Find(toolEquipData => toolEquipData.toolCode == toolCode);

        if (toolData != null)
        {
            // Смену каждого инструмента можно реализовать двумя способами. Через смену всего спрайта или через инициализацию
            // дополнительного gameObject с инструментом. Изначально я делал отдельные спрайты персонажа для каждого инструмента. Для
            // моих спрайтов автоматических риггинг работает некорректно, а вручную это занимает время. Т.е. введение новых инструментов
            // становится довольно муторно. Но с таким способом можно лучше регулировать "глубину" инструмента - например, чтобы он был за головой, но перед телом.
            // Метод с геймобъектом быстрее, но там не получится сделать разное отношение глубин для разных частей тела - только для всего тела целиком.
            // Поэтому я оставил оба способа, потому что где-то без замены спрайта не обойтись (как, например, с лопатой), а где-то хватит и геймобъекта (мешок)
            if (toolData.isToUseSpriteSwitch)
            {
                spriteResolver.SetCategoryAndLabel(spriteResolver.GetCategory(), toolMode ? toolData.spriteResolveLabel : "Main");
            }
            else
            {
                toolData.ChangeMode(toolMode);
            }
        }
    }
        private void SetLabel(SpriteResolver spriteResolver, string label)
        {
            var category = spriteResolver.GetCategory();

            label = DoesLabelExistInCategory(label, category) ? label : NoneLabel;
            spriteResolver.SetCategoryAndLabel(category, label);
        }
    // Start is called before the first frame update
    void Start()
    {
        eyes.SetCategoryAndLabel(eyes.GetCategory(), "" + Random.Range(1, 10));
        mouth.SetCategoryAndLabel(mouth.GetCategory(), "" + Random.Range(1, 10));
        hair.SetCategoryAndLabel(hair.GetCategory(), "" + Random.Range(1, 10));
        List <string> s = library.GetCategoryLabelNames(weapons.GetCategory()).ToList();

        weapons.SetCategoryAndLabel(weapons.GetCategory(), s[Random.Range(0, 5)]);
        Pawn pawn = GetComponentInParent <Pawn>();

        if (pawn.color)
        {
            string        label = "Thief";
            List <string> s1    = library.GetCategoryLabelNames(label).ToList();
            body.SetCategoryAndLabel(label, s1[Random.Range(0, 3)]);
        }
        else
        {
            string        label = "Raider";
            List <string> s1    = library.GetCategoryLabelNames(label).ToList();
            body.SetCategoryAndLabel(label, s1[Random.Range(0, 3)]);
        }
    }
Beispiel #5
0
 public override string ToString()
 {
     return(characterData.name + ", sprite : " + spriteResolver.GetCategory());
 }
Beispiel #6
0
 public ModelPart(SpriteResolver resolver)
 {
     _resolver = resolver;
     _category = _resolver.GetCategory();
     _renderer = _resolver.GetComponent <SpriteRenderer>();
 }
    /**
     * @Description: The function of changing equipment,
     *              other script can using PlayerController.Instance.ChangeEquipments to call this function.
     *              for the first param, developer could using PlayerController.EquopmentType to choose which equipmentType they want to change,
     *              for the second param, developer could using PlayerController.EQUIPMENT_LEVEL_XXX to choose which level of equipment they want to change.
     * @version: 1.0.0
     * @Author: Zilin Zhang
     * @Date: 2020-11-27 03:30:14
     * @LastEditors: Zilin Zhang
     * @LastEditTime: 2020-11-27 03:29:45
     */
    public void ChangeEquipments(EquipmentType equipmentType, string equipmentLevel)
    {
        switch (equipmentType)
        {
        case EquipmentType.armour:
            foreach (var resolver in spriteResolvers)
            {
                if (!(resolver.GetCategory().Equals("LeftItem") || resolver.GetCategory().Equals("RightItem")))
                {
                    resolver.SetCategoryAndLabel(resolver.GetCategory(), equipmentLevel);
                }
            }
            if (equipmentLevel.Equals(EQUIPMENT_LEVEL_NORMAL))
            {
                itemEquipment.SetActive(true);
            }
            else
            {
                itemEquipment.SetActive(false);
            }
            break;

        case EquipmentType.leftHand:
            if (rightHandResolve.GetLabel().Equals(EQUIPMENT_RIGHT_ITEM_WOOD_BOW))
            {
                rightHandResolve.SetCategoryAndLabel(rightHandResolve.GetCategory(), EQUIPMENT_LEFT_OR_RIGHT_ITEM_NONE);
                arrowBag.SetActive(false);
                isEquippedRemoteWeapon = false;
            }
            leftHandResolve.SetCategoryAndLabel(leftHandResolve.GetCategory(), equipmentLevel);
            break;

        case EquipmentType.rightHand:
            // handle some special type
            // can not use other things in left hand when using bow
            if (equipmentLevel.Equals(EQUIPMENT_RIGHT_ITEM_WOOD_BOW) ||
                equipmentLevel.Equals(EQUIPMENT_RIGHT_ITEM_IRON_BOW) ||
                equipmentLevel.Equals(EQUIPMENT_RIGHT_ITEM_GOLD_BOW))
            {
                leftHandResolve.SetCategoryAndLabel(leftHandResolve.GetCategory(), EQUIPMENT_LEFT_ITEM_WOOD_ARROW);
                rightHandResolve.SetCategoryAndLabel(rightHandResolve.GetCategory(), EQUIPMENT_RIGHT_ITEM_WOOD_BOW);
                arrowBag.SetActive(true);
                isEquippedRemoteWeapon = true;
            }
            else
            {
                if (rightHandResolve.GetLabel().Equals(EQUIPMENT_RIGHT_ITEM_WOOD_BOW) ||
                    rightHandResolve.GetLabel().Equals(EQUIPMENT_RIGHT_ITEM_IRON_BOW) ||
                    rightHandResolve.GetLabel().Equals(EQUIPMENT_RIGHT_ITEM_GOLD_BOW))
                {
                    leftHandResolve.SetCategoryAndLabel(leftHandResolve.GetCategory(), EQUIPMENT_LEFT_OR_RIGHT_ITEM_NONE);
                    arrowBag.SetActive(false);
                    isEquippedRemoteWeapon = false;
                }
                rightHandResolve.SetCategoryAndLabel(rightHandResolve.GetCategory(), equipmentLevel);
            }
            break;

        default:
            break;
        }
    }