Beispiel #1
0
 void Start()
 {
     if (enemy == null)
     {
         enemy = GetComponentInParent <GAFEnemy>();
     }
 }
Beispiel #2
0
    void TakeEffect()
    {
        if (attack == null)
        {
            return;
        }
        var hits = Physics2D.CircleCastAll(target, damageRadui, Vector2.zero);

        if (hits != null && hits.Length > 0)
        {
            for (int i = 0; i < hits.Length; i++)
            {
                GAFEnemy gafEnemy = hits[i].collider.gameObject.GetComponentInParent <GAFEnemy>();
                if (gafEnemy == null)
                {
                    gafEnemy = hits[i].collider.gameObject.GetComponent <GAFEnemy>();
                }

                if (gafEnemy != null)
                {
                    gafEnemy.TakeDamage(attack.GetAttack());
                }
            }
        }
    }
Beispiel #3
0
 void Start()
 {
     if(enemy == null)
     {
         enemy = GetComponentInParent<GAFEnemy>();
     }
 }
Beispiel #4
0
    public void OnEnable()
    {
        //if (anim == null)
        //{
        //    anim = GetComponent<Animator>();
        //}

        if (enemy == null)
        {
            enemy = GetComponent <GAFEnemy>();
        }
        if (enemy != null)
        {
            enemy.ReadyFroShoot = false;
            anim = enemy.anim;
            //  RunEmerge();
        }
    }
Beispiel #5
0
    public void OnEnable()
    {
        //if (anim == null)
        //{
        //    anim = GetComponent<Animator>();
        //}

        if (enemy == null)
        {
            enemy = GetComponent<GAFEnemy>();
        }
        if (enemy != null)
        {
            enemy.ReadyFroShoot = false;
            anim = enemy.anim;
          //  RunEmerge();
        }
      
    }
Beispiel #6
0
    public virtual void Start()
    {
        if (animator == null)
        {
            if (animatorInChildren)
            {
                animator = GetComponentInChildren <Animator>();
            }
            else
            {
                animator = GetComponent <Animator>();
            }
        }

        if (enemy == null)
        {
            enemy = GetComponent <GAFEnemy>();
            //GAFEnemyEvent
        }
    }
Beispiel #7
0
    public virtual void Start()
    {
        
        if(animator == null)
        {
            if(animatorInChildren)
            {
                animator = GetComponentInChildren<Animator>();
            }
            else
            {
                animator = GetComponent<Animator>();
            }
        }

        if(enemy == null)
        {
            enemy = GetComponent<GAFEnemy>();
            //GAFEnemyEvent
        }
    }
    bool SpwanObjectAt(GameObject obj, Transform parent)
    {
        if (parent == null)
        {
            return(false);
        }
        GameObject swpanObj = null;

        var posProperty = parent.GetComponent <PositionProperty>();

        if (posProperty == null)
        {
            return(false);
        }

        if (posProperty.positionType == EnemySpwanPosition.FixedPosition)
        {
            swpanObj = (GameObject)Instantiate(obj, parent.position, parent.rotation);
            swpanObj.transform.parent = parent.transform;
        }
        else if (posProperty.positionType == EnemySpwanPosition.RandomPosition)
        {
            Vector3 postion = new Vector3(posProperty.GetRandomX(), parent.position.y, parent.position.z);
            swpanObj = (GameObject)Instantiate(obj);
            swpanObj.transform.SetParent(parent);
            swpanObj.transform.position = postion;
        }
        if (swpanObj != null)
        {
            //避免重叠
            float timeFlag = Time.time / 100000;
            timeFlag = timeFlag - Mathf.FloorToInt(timeFlag);
            swpanObj.transform.position += new Vector3(0, 0, -timeFlag);
            //swpanObj.transform. = parent.transform;
            swpanObj.transform.localScale = parent.transform.lossyScale;

            //disable mask
            if (!posProperty.enableMask)
            {
                var mask = swpanObj.transform.FindChild("mask");
                mask.gameObject.SetActive(false);
            }
            EnemyEmerge ee = parent.GetComponent <EnemyEmerge>();
            if (ee != null)
            {
                EnemyEmerge enew = swpanObj.AddComponent <EnemyEmerge>();
                enew.CopyFrom(ee);
                enew.RunEmerge();
            }

            //敌人的属性
            GAFEnemy e = swpanObj.GetComponent <GAFEnemy>();
            if (e == null)
            {
                Debug.Log("Dont have Enemy component!");
                e = swpanObj.AddComponent <GAFEnemy>();
            }

            e.EnhanceByTurn(1 + currentTurn * enhancePerTurn + currentWave * enhancePerWave);
            SortLayer sl = parent.GetComponent <SortLayer>();
            if (sl != null && sl.layerName != "")
            {
                SpriteRenderer[] render = swpanObj.GetComponentsInChildren <SpriteRenderer>();
                if (render != null && render.Length > 0)
                {
                    for (int i = 0; i < render.Length; i++)
                    {
                        render[i].sortingLayerName = sl.layerName;
                    }
                }

                var sortlayer = swpanObj.AddComponent <GAFSortLayer>();
                sortlayer.sortLayerName = sl.layerName;
            }
            //是否能够横向漫游
            EnemyWanderX[] wanders = swpanObj.GetComponents <EnemyWanderX>();
            if (wanders != null && wanders.Length > 0)
            {
                for (int i = 0; i < wanders.Length; i++)
                {
                    if (wanders[i].GetType() == typeof(EnemyWanderRunX))
                    {
                        wanders[i].enabled = posProperty.allowRunX;
                    }
                    else
                    {
                        wanders[i].enabled = posProperty.allowWanderX;
                    }
                    wanders[i].minMovementX = posProperty.minMovementX;
                    wanders[i].maxMovementX = posProperty.maxMovementX;
                }
            }

            //通知GameManager ,产生了敌人
            AddAliveEmeny();
            needCreateEnemy--;
            return(true);
        }
        return(false);
    }
Beispiel #9
0
    public void Shoot(Vector3 postion)
    {
        //Debug.Log (postion);
        deltaTime = 0;
        canShoot  = false;
        anim.SetTrigger("isShooting");
        PlayMuzzleEffect();
        PlaySignEffect();
        PlayShootAudio();
        ShowBullet(postion);
        ShowShell();
        //更新子弹数量显示
        curMagSize -= 1;
        UpdateBulletDisplay();
        if (shakeWhenShoot)
        {
            ShakeBackground();
        }
        RaycastHit2D rayhit     = Physics2D.Raycast(postion, Vector2.zero);
        bool         isHitEnemy = false;

        if (rayhit.collider != null)
        {
            GAFEnemy gafEnemy = rayhit.collider.gameObject.GetComponentInParent <GAFEnemy>();
            if (gafEnemy == null)
            {
                gafEnemy = rayhit.collider.gameObject.GetComponent <GAFEnemy>();
            }
            if (gafEnemy != null)
            {
                // Debug.Log(gafEnemy.name);
                //Debug.Log(rayhit.collider.GetType());
                if (rayhit.collider.GetType() == typeof(CircleCollider2D))
                {
                    gafEnemy.TakeDamage(attack, true);
                }
                else
                {
                    gafEnemy.TakeDamage(attack);
                }
                isHitEnemy = true;
            }

            Shootable shootable = rayhit.collider.GetComponent <Shootable>();
            if (shootable != null)
            {
                shootable.TakeDemage(attack);
                isHitEnemy = true;
            }

            //判断是否击中了箱子
            GameItem item = rayhit.collider.GetComponent <GameItem>();
            if (item)
            {
                item.TakeDamage(attack);
                isHitEnemy = true;
            }
        }
        if (!isHitEnemy)
        {
            PlaySignImpactEffect(postion);
        }
    }