Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        var motionComponent = CombatEntity.GetComponent <MotionComponent>();

        if (motionComponent.Enable)
        {
            if (motionComponent.MoveTimer.IsRunning)
            {
                AnimationComponent.TryPlayFade(AnimationComponent.RunAnimation);
            }
            else
            {
                AnimationComponent.TryPlayFade(AnimationComponent.IdleAnimation);
            }
            transform.position = CombatEntity.Position;
            transform.GetChild(0).localEulerAngles = new Vector3(0, CombatEntity.Direction + 90, 0);
        }
    }
Exemplo n.º 2
0
    public void Attack()
    {
        //PlayThenIdleAsync(AnimationComponent.AttackAnimation).Coroutine();

        var monster = GameObject.Find("Monster");

        SpawnLineEffect(AttackPrefab, transform.position, monster.transform.position);
        SpawnHitEffect(transform.position, monster.transform.position);

        CombatEntity.GetComponent <AttributeComponent>().AttackPower.SetBase(ET.RandomHelper.RandomNumber(600, 999));

        var action = CombatEntity.CreateAction <AttackAction>();

        action.Target = monster.GetComponent <Monster>().CombatEntity;
        action.ApplyAttack();
    }
Exemplo n.º 3
0
    private void OnReceiveStatus(ActionExecution combatAction)
    {
        var action = combatAction as AssignEffectAction;

        if (action.Effect is AddStatusEffect addStatusEffect)
        {
            var statusConfig = addStatusEffect.AddStatus;
            if (name == "Monster")
            {
                var obj = GameObject.Instantiate(CombatObjectData.StatusIconPrefab);
                obj.transform.SetParent(CombatObjectData.StatusSlotsTrm);
                obj.GetComponentInChildren <Text>().text = statusConfig.Name;
                obj.name = action.Status.Id.ToString();
            }

            if (statusConfig.ID == "Vertigo")
            {
                CombatEntity.GetComponent <MotionComponent>().Enable = false;
                CombatObjectData.AnimationComponent.AnimancerComponent.Play(CombatObjectData.AnimationComponent.StunAnimation);
                var vertigoParticle = CombatObjectData.vertigoParticle;
                if (vertigoParticle == null)
                {
                    vertigoParticle = GameObject.Instantiate(statusConfig.ParticleEffect);
                    vertigoParticle.transform.parent        = transform;
                    vertigoParticle.transform.localPosition = new Vector3(0, 2, 0);
                }
            }
            if (statusConfig.ID == "Weak")
            {
                var weakParticle = CombatObjectData.weakParticle;
                if (weakParticle == null)
                {
                    weakParticle = GameObject.Instantiate(statusConfig.ParticleEffect);
                    weakParticle.transform.parent        = transform;
                    weakParticle.transform.localPosition = new Vector3(0, 0, 0);
                }
            }
        }
    }
Exemplo n.º 4
0
    // Start is called before the first frame update
    void Start()
    {
        Instance     = this;
        CombatEntity = Entity.CreateWithParent <CombatEntity>(CombatContext.Instance);
        CombatEntity.AddComponent <SkillPreviewComponent>();
        CombatEntity.AddComponent <EquipmentComponent>();
        //CombatEntity.GetComponent<MotionComponent>().Enable = false;
        CombatEntity.ListenActionPoint(ActionPointType.PreSpell, OnPreSpell);
        CombatEntity.ListenActionPoint(ActionPointType.PostSpell, OnPostSpell);
        CombatEntity.Subscribe <AnimationClip>(OnPlayAnimation);

#if EGAMEPLAY_EXCEL
        var          config  = ConfigHelper.Get <SkillConfig>(1001);
        SkillAbility ability = CombatEntity.AttachSkill <SkillAbility>(config);
        CombatEntity.BindSkillInput(ability, KeyCode.Q);

        config  = ConfigHelper.Get <SkillConfig>(1002);
        ability = CombatEntity.AttachSkill <SkillAbility>(config);
        CombatEntity.BindSkillInput(ability, KeyCode.W);

        config  = ConfigHelper.Get <SkillConfig>(1004);
        ability = CombatEntity.AttachSkill <SkillAbility>(config);
        CombatEntity.BindSkillInput(ability, KeyCode.E);

        SkillSlotsTrm.Find("SkillButtonD").gameObject.SetActive(false);
        SkillSlotsTrm.Find("SkillButtonE").gameObject.SetActive(false);
#else
        SkillConfigObject config  = Resources.Load <SkillConfigObject>("SkillConfigs/Skill_1001_黑火球术");
        SkillAbility      ability = CombatEntity.AttachSkill <SkillAbility>(config);
        CombatEntity.BindSkillInput(ability, KeyCode.Q);

        config  = Resources.Load <SkillConfigObject>("SkillConfigs/Skill_1002_炎爆");
        ability = CombatEntity.AttachSkill <SkillAbility>(config);
        CombatEntity.BindSkillInput(ability, KeyCode.W);

        config  = Resources.Load <SkillConfigObject>("SkillConfigs/Skill_1004_血红激光炮");
        ability = CombatEntity.AttachSkill <SkillAbility>(config);
        CombatEntity.BindSkillInput(ability, KeyCode.E);

        config  = Resources.Load <SkillConfigObject>("SkillConfigs/Skill_1005_火弹");
        ability = CombatEntity.AttachSkill <SkillAbility>(config);
        CombatEntity.BindSkillInput(ability, KeyCode.R);

        config  = Resources.Load <SkillConfigObject>("SkillConfigs/Skill_1006_灵魂镣铐");
        ability = CombatEntity.AttachSkill <SkillAbility_1006>(config);
        CombatEntity.BindSkillInput(ability, KeyCode.T);

        config  = Resources.Load <SkillConfigObject>("SkillConfigs/Skill_1003_治愈");
        ability = CombatEntity.AttachSkill <SkillAbility>(config);
        CombatEntity.BindSkillInput(ability, KeyCode.Y);
#endif
        for (int i = InventoryPanelTrm.childCount; i > 0; i--)
        {
            GameObject.Destroy(InventoryPanelTrm.GetChild(i - 1).gameObject);
        }
        var allItemConfigs = ConfigHelper.GetAll <EquipmentConfig>();
        foreach (var item in allItemConfigs)
        {
            var itemObj = GameObject.Instantiate(ItemPrefab);
            itemObj.transform.parent = InventoryPanelTrm;
            itemObj.transform.Find("Icon").GetComponent <UnityEngine.UI.Image>().sprite = Resources.Load <Sprite>($"Icons/{item.Value.Name}");
            var text = itemObj.transform.Find("Text").GetComponent <UnityEngine.UI.Text>();
            text.text = $"+{item.Value.Value}";
            if (item.Value.Attribute == "AttackPower")
            {
                text.color = Color.red;
            }
            itemObj.GetComponent <UnityEngine.UI.Button>().onClick.AddListener(() => {
                if (EquipmentPanelTrm.childCount >= 4)
                {
                    return;
                }
                var equipObj = GameObject.Instantiate(ItemPrefab);
                equipObj.transform.parent = EquipmentPanelTrm;
                equipObj.transform.Find("Icon").GetComponent <UnityEngine.UI.Image>().sprite = Resources.Load <Sprite>($"Icons/{item.Value.Name}");
                var equipText  = equipObj.transform.Find("Text").GetComponent <UnityEngine.UI.Text>();
                equipText.text = $"+{item.Value.Value}";
                if (item.Value.Attribute == "AttackPower")
                {
                    equipText.color = Color.red;
                }
                var itemData      = Entity.CreateWithParent <ItemData>(CombatEntity);
                equipObj.name     = $"{itemData.Id}";
                itemData.ConfigId = item.Value.Id;
                CombatEntity.GetComponent <EquipmentComponent>().AddItemData(itemData);
                equipObj.GetComponent <UnityEngine.UI.Button>().onClick.AddListener(() => {
                    var id = long.Parse(equipObj.name);
                    CombatEntity.GetComponent <EquipmentComponent>().RemoveItemData(id);
                    GameObject.Destroy(equipObj);
                });
            });
        }

        AnimTimer.MaxTime = AnimTime;
    }