示例#1
0
 public AbilityButton Init(HeroAbility heroAbility)
 {
     animator = GetComponent <Animator>();
     cooldown = heroAbility.GetCooldown();
     transform.Find("Big Button/Name").GetComponent <Text>().text =
         heroAbility.GetAbilityName();
     transform.Find("Small Button/Hotkey").GetComponent <Text>().text =
         Hotkey.ConvertIndexToHotkey(heroAbility.GetIndex());
     animator.speed = 1 / cooldown;
     return(this);
 }
示例#2
0
    public void Cast(int abilityIndex, Vector3 point, EnemyController target)
    {
        if (abilityIndex >= hero.CountAbilities())
        {
            return;
        }

        tempAbility = hero.GetAbility(abilityIndex);

        if (tempAbility.IsOnCooldown())
        {
            return;
        }
        if (tempAbility.NeedTarget())
        {
            if (!target || Distance.IsEnemyFar(this, target, tempAbility.GetRange()))
            {
                return;
            }

            tempAbility.Use(target);
            if (tempAbility.NeedCoroutine())
            {
                StartCoroutine(tempAbility.AbilityCoroutine(target));
            }
        }
        else
        {
            if (Distance.IsPointFar(this, point, tempAbility.GetRange()))
            {
                return;
            }

            tempAbility.Use(point);
            if (tempAbility.NeedCoroutine())
            {
                StartCoroutine(tempAbility.AbilityCoroutine(point));
            }
        }

        tempAbility.ChangeAnimation(animator);
        if (hero.GetAttackAbility().GetCastTime() > 0)
        {
            doNothingTime = Time.time + hero.GetAttackAbility().GetCastTime();
        }
    }
示例#3
0
 private void Start()
 {
     AttackAbility = Instantiate(AttackAbility);
     AttackAbility.transform.parent = transform;
 }
示例#4
0
 public void AddAbility(HeroAbility ability)
 {
     ability.SetIndex(abilities.Count);
     abilities.Add(ability);
 }