Esempio n. 1
0
    // 3D에서는 판정이 쉽지만 2D에서 어려운부분이있기때문에  때릴때마다 콜라이더 생성해줌
    // 포인트 하나 정해놓고 그위에 판정박스 열어줌.  애니메이션상에서   메소드 호출해줌
    // 이부분에 덱스를 이용한 랜덤값으로... 미스라던가  크리티컬 해줄수있음
    public void AttackAnimationEvent()
    {
        // 공격 포인트에서 1반지름 안에 들어오는 몬스터들의 콜라이더를 검출함
        Collider2D[] colliders = Physics2D.OverlapCircleAll(_attackPoint.position, 0.85f, 1 << LayerMask.NameToLayer("Enemy"));
        // OverlapCircleAll 은 복수의 오브젝트를 검출함, 디테일하게 나누려면 태그와 레이어를 같이써도됨



        // 검출된 콜라이더에서

        foreach (Collider2D collider in colliders)
        {
            // 몬스터에게

            if (collider.tag == "Enemy" || collider.tag == "BossEnemy")
            {
                mpUp.plusMp();

                // 피격 처리를 요청함   인터페이스를 안쓰고 데미지 주려고 센드메세지사용함


                // 이부분에 덱스를 이용한 랜덤값으로... 미스라던가  크리티컬 해줄수있음

                _weaponDamage = GameObject.Find("LHTwoHandSword").GetComponent <WeaponInfo>();

                _weaponDamage.damage = Random.Range(_weaponDamage.minDamage, _weaponDamage.maxDamage + 1);

                collider.SendMessage("Damage", Mathf.Round(_weaponDamage.damage));
                return;  // 리턴하는이유는 1마리씩만 때리려고
            }
        }
    }
    protected override void OnTriggerEnter2D(Collider2D col) // 몹은 istrigger가 되어있어서 총알이 istrigger가 아니어도
    {                                                        // 항상 관통하는거로 보이기때문에,, 관통형 비관통형 만들어야함
        // 플레이어 피격시                                 // 불타입 옵션 만들어서
        if (col.tag == _targetTag || col.tag == "Boss" + _targetTag)
        {
            bulletDamage.damage = Random.Range(bulletDamage.minDamage, bulletDamage.maxDamage + 1);
            col.SendMessage("Damage", Mathf.Round(bulletDamage.damage));

            if (_isPierce == false) // 관통형총알은 플레이어가쏜.. 마법 평타일경우에 마나1씩올려줌
            {
                if (gameObject.tag == "PlayerBullet")
                {
                    magicArrowManaUp = GameObject.Find("Player").GetComponentInChildren <PlayerSkill>();
                }
                magicArrowManaUp.plusMp();
                Destroy(gameObject);
            }
        }


        // 벽 충돌시
        base.OnTriggerEnter2D(col);
    }