Beispiel #1
0
    private void OnTriggerEnter(Collider coll)                // 공격 충돌 처리
    {
        if (coll.gameObject.tag == "enemy")                   // 충돌 대상이 적 태그를 가지고 있으면
        {
            CROWD_CONTROL  cc = CROWD_CONTROL.NONE;           // 특수 공격상태
            SPECIAL_DAMAGE sd = SPECIAL_DAMAGE.NONE;          // 특수 추가 데미지
            int            criticalPercent = 20;              // 기본 치명타 확률

            int             str         = CharacterInfoManager.instance.m_iCurStr;
            EnemyInfomation enemyScript = coll.GetComponentInParent <EnemyInfomation>();                                                        // 적 스크립트를 받아와서

            if (Vector3.Dot(coll.transform.forward, (transform.position - coll.transform.position).normalized) < Mathf.Cos(90 * Mathf.Deg2Rad)) // 내적을 구해서 적의 정면에서 90도내에 플레이어가 없으면 (좌우 합쳐 180도)
            {
                cc = CROWD_CONTROL.BACK_ATTACK;                                                                                                 // 백어택 발동
                criticalPercent *= 2;                                                                                                           // 크리티컬 확률 2배
            }

            if (Random.Range(0, 100) < criticalPercent)                                                                                           // 크리티컬 확률 안에 들어오면
            {
                if (cc == CROWD_CONTROL.BACK_ATTACK)
                {
                    sd = SPECIAL_DAMAGE.CRITICAL_BACK_ATTACK;
                }
                else
                {
                    sd = SPECIAL_DAMAGE.CRITICAL;
                }
            }
            enemyScript.attacted(m_fCurAttackDamage * str, sd, cc); // 그 적은 내 현재 공격모션의 데미지를 부여함
        }
        if (coll.gameObject.tag == "Potal")                         // 충돌 대상이 스테이지를 넘어가는 포탈이면
        {
            if (s_eventPlayerState == null)
            {
                GameManager.instance.nextDungeonLoad();
            }
            else
            {
                GameManager.instance.stateExplain(1);
            }
        }
        if (coll.gameObject.tag == "DropItem")                   // 충돌 대상이 아이템이면
        {
            DropItem dropItemScripte = coll.GetComponent <DropItem>();
            ItemManager.Instance.putInventroyItem(dropItemScripte.getItenName()); // 인벤토리에 아이템을 넣음
            ObjectPoolManager.Instance.PushToPool("DropItem", coll.gameObject);
        }
        if (coll.gameObject.tag == "DropGold")
        {
            DropGold dropGoldScripte = coll.GetComponent <DropGold>();
            CharacterInfoManager.instance.m_playerInfo.m_iGold += coll.GetComponent <DropGold>().getGoldAmount();
            ProfileUIManager.Instance.changeGold();
            ObjectPoolManager.Instance.PushToPool("DropGold", coll.gameObject);
        }
        if (coll.gameObject.tag == "Barrigate")
        {
            GameManager.instance.stateExplain(0);
        }
    }
Beispiel #2
0
 private void OnTriggerEnter(Collider coll)
 {
     if (coll.gameObject.tag == "enemy")                                              // 충돌 대상이 적 태그를 가지고 있으면
     {
         EnemyInfomation enemyScript = coll.GetComponentInParent <EnemyInfomation>(); // 적 스크립트를 받아와서
         enemyScript.attacted(30);                                                    // 30데미지 부여
     }
 }
Beispiel #3
0
 private void OnTriggerEnter(Collider coll)
 {
     if (coll.gameObject.tag == "enemy")                                              // 충돌 대상이 적 태그를 가지고 있으면
     {
         EnemyInfomation enemyScript = coll.GetComponentInParent <EnemyInfomation>(); // 적 스크립트를 받아와서
         enemyScript.attacted(1 * CharacterInfoManager.instance.m_iCurStr);           // 1배율의 데미지 부여
     }
 }