Esempio n. 1
0
    protected override void PlayEffect()
    {
        GameObject effect = Instantiate <GameObject>(effectPrefab);

        effect.transform.position = target[0].transform.position;
        OneShotEffect skillEffect = effect.GetComponent <OneShotEffect>();

        skillEffect.responseList = damageInfo.responseList;
    }
Esempio n. 2
0
 protected override void PlayEffect()
 {
     foreach (DamageResponse response in damageInfo.responseList)
     {
         GameObject effect = Instantiate <GameObject>(effectPrefab);
         effect.transform.position = response.target.transform.position;
         OneShotEffect skillEffect = effect.GetComponent <OneShotEffect>();
         skillEffect.responseList.Add(response);
     }
 }
Esempio n. 3
0
    void Update()
    {
        if (target != null && !dying)
        {
            Vector3 targetPos = target.transform.position;

            if (!target.IsAlive())
            {
                targetPos = previousTargetPos;
            }

            targetPos.y = 0.5f;

            var targetDir  = (targetPos - transform.position).normalized;
            var targetDist = Vector3.Distance(transform.position, targetPos);

            if (targetDist < energyTypeConfig.Speed * Time.deltaTime)
            {
                transform.position = targetPos;
            }
            else
            {
                transform.position = transform.position + targetDir * energyTypeConfig.Speed * Time.deltaTime;
            }

            if (Vector3.Distance(transform.position, targetPos) < minDistance)
            {
                if (energyTypeConfig.ExplodeRange > 0) //projectile is aoe, find targets
                {
                    doAoEDamage();
                }
                else
                {
                    target.TakeDamage(energyTypeConfig);
                }

                if (explosion != null)
                {
                    try
                    {
                        OneShotEffect expl = ObjectPooler.GetPool(explosion).ActivateObject(transform.position).GetComponent <OneShotEffect>();

                        expl.Play();
                    }
                    catch (Exception e)
                    {
                        Debug.Log("PASKA LÄSÄHTI!");
                        Debug.Log("Type: " + energyTypeConfig.Type);
                        Debug.Log("Explosion: " + explosion);
                        Debug.Log("Transform pos: " + transform.position);
                        Pool debugPool = ObjectPooler.GetPool(explosion);
                        Debug.Log("Pool: " + debugPool);
                        GameObject debugObj = debugPool.ActivateObject(transform.position);
                        Debug.Log("Test activating obj: " + debugObj);
                        OneShotEffect effect = debugObj.GetComponent <OneShotEffect>();
                        Debug.Log("Test getting OneShotEffect component: " + effect);
                        throw e;
                    }
                }
                targetsHit.Add(target.gameObject);

                if (!TryBounce())
                {
                    Invoke("Die", 0.5f);
                    StopEffects();
                    dying = true;
                }
            }

            previousTargetPos = targetPos;
        }
    }