コード例 #1
0
    private void SpawnBoxymon(BoxymonType boxymonType)
    {
        Boxymon instance = m_EnemyPool.Rent(true).GetComponent <Boxymon>();

        instance.transform.position = transform.position;
        instance.Init(boxymonType, m_MapData, true);
        instance.OnBoxymonDeath += BoxymonDied;
        m_AliveBoxymons.Add(instance);
    }
コード例 #2
0
    public void StackEffect(GameObject target)
    {
        Boxymon boxymon = target.GetComponent <Boxymon>();

        if (boxymon != null)
        {
            m_OriginalSpeed = boxymon.MoveSpeed;
        }
    }
コード例 #3
0
    public void OnTriggerEnter(Collider other)
    {
        Boxymon boxymon = other.GetComponent <Boxymon>();

        if (boxymon && !m_BoxymonsInRange.Contains(boxymon))
        {
            m_BoxymonsInRange.Add(boxymon);
            boxymon.OnBoxymonDeath += BoxymonDied;
        }
    }
コード例 #4
0
    private void BoxymonDied(Boxymon boxymon)
    {
        m_BoxymonsInRange.Remove(boxymon);
        boxymon.OnBoxymonDeath -= BoxymonDied;

        if (m_BoxymonsInRange.Count <= 0)
        {
            m_ClosestBoxymon = null;
        }
    }
コード例 #5
0
    public void ApplyEffect(GameObject target)
    {
        Boxymon boxymon = target.GetComponent <Boxymon>();

        if (boxymon != null)
        {
            m_OriginalSpeed   = boxymon.MoveSpeed;
            boxymon.MoveSpeed = m_OriginalSpeed * m_SpeedMultiplier;

            if (boxymon.MoveSpeed < 0.0f)
            {
                boxymon.MoveSpeed = 0.0f;
            }
        }
    }
コード例 #6
0
    public void OnTriggerExit(Collider other)
    {
        Boxymon boxymon = other.GetComponent <Boxymon>();

        if (boxymon && m_BoxymonsInRange.Contains(boxymon))
        {
            m_BoxymonsInRange.Remove(boxymon);

            if (m_BoxymonsInRange.Count <= 0)
            {
                m_ClosestBoxymon = null;
            }
            boxymon.OnBoxymonDeath -= BoxymonDied;
        }
    }
コード例 #7
0
    private void AoEHit(Vector3 impactPoint)
    {
        int collidersInsideArea = Physics.OverlapSphereNonAlloc(impactPoint, m_CurrentScriptableBullet.ExplosionRange, m_ExplosionHits);

        if (collidersInsideArea > 0)
        {
            foreach (Collider collider in m_ExplosionHits)
            {
                if (collider != null)
                {
                    if (collider.CompareTag(m_EnemyTag))
                    {
                        Boxymon boxymon = collider.GetComponent <Boxymon>();
                        BulletHit(boxymon);
                    }
                }
            }
        }
    }
コード例 #8
0
    public void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag(m_TowerTag))
        {
            return;
        }

        if (other.CompareTag(m_EnemyTag))
        {
            Boxymon boxymon = other.GetComponent <Boxymon>();

            if (boxymon.gameObject.activeSelf && m_CurrentScriptableBullet != null)
            {
                OnHit(other.transform.position, boxymon);
                return;
            }
        }

        OnHit(other.transform.position);
    }
コード例 #9
0
    private void OnHit(Vector3 impactPoint, Boxymon boxymon = null)
    {
        if (m_CurrentScriptableBullet.TriggerHitOnDisable)
        {
            AoEHit(impactPoint);
        }
        else
        {
            BulletHit(boxymon);
        }

        if (m_CurrentScriptableBullet.OnHitParticleEffect != null)
        {
            GameObject particleEffect = m_CurrentScriptableBullet.OnHitParticleEffect.Rent(true);
            particleEffect.transform.position = impactPoint;
            particleEffect.SetActive(true);
        }

        gameObject.SetActive(false);
    }
コード例 #10
0
 private void BoxymonDied(Boxymon boxymon)
 {
     m_AliveBoxymons.Remove(boxymon);
     boxymon.OnBoxymonDeath -= BoxymonDied;
 }
コード例 #11
0
 private void BulletHit(Boxymon boxymon)
 {
     boxymon?.TakeDamage(m_CurrentScriptableBullet.Damage, m_Effects);
 }