예제 #1
0
    private void DetectEnemy(Vector2 position, Vector2 direction, float range, int damage)
    {
        GameObject   lastEnemyHit = null;
        RaycastHit2D enemyHitData = Physics2D.Raycast(position, direction, range, 1 << StaticVar.LAYER_ENEMY);

        while (enemyHitData)
        {
            lastEnemyHit = enemyHitData.collider.gameObject;
            range       -= enemyHitData.distance;

            lastEnemyHit.GetComponent <Collider2D>().enabled = false;
            enemyHitData = Physics2D.Raycast(enemyHitData.point, direction, range, 1 << StaticVar.LAYER_ENEMY);
            lastEnemyHit.GetComponent <Collider2D>().enabled = true;

            Enemy enemy = lastEnemyHit.GetComponent <Enemy>();
            if (enemy)
            {
                enemy.GetHit(damage);
            }

            Enemy_Boss boss = lastEnemyHit.GetComponent <Enemy_Boss>();
            if (boss)
            {
                boss.GetHit(damage);
            }
        }
    }
예제 #2
0
    private int maxHP;                                // 最大HP

    void Start()
    {
        Instance = this;

        phase    = Phase.Standy;
        endDeath = false;

        maxHP = hp;

        SpriteRenderer sr = this.gameObject.GetComponent <SpriteRenderer>();

        enemyColor = sr.color;

        bitObjects = new GameObject[4];
        for (int i = 0; i < 4; i++)
        {
            bitObjects[i] = Instantiate(bitPrefabs);
        }

        this.transform.position = new Vector3(0.0f, 12.0f, 0.0f);

        this.GetComponent <Collider2D>().enabled = false;
        for (int i = 0; i < 4; i++)
        {
            bitObjects[i].GetComponent <Collider2D>().enabled = false;
        }

        StartCoroutine(StandbyCorutine());
    }
예제 #3
0
    // Update is called once per frame
    void Update()
    {
        if (timeBtwAttack <= 0)
        {
            if (Input.GetButtonDown("Attack"))
            {
                animator.SetBool("Sword", true);
                audioSource.PlayOneShot(collisionSoundClip);

                StartCoroutine(attacking());

                Collider2D[] enemiesToDamage = Physics2D.OverlapCircleAll(attackPos.position, attackRange, WhatIsEnemies);

                for (int i = 0; i < enemiesToDamage.Length; i++)
                {
                    WallEnemyAI e  = enemiesToDamage[i].GetComponent <WallEnemyAI>();
                    NEnemy      e2 = enemiesToDamage[i].GetComponent <NEnemy>();
                    FlyEnemy    e3 = enemiesToDamage[i].GetComponent <FlyEnemy>();
                    Enemy_Boss  eb = enemiesToDamage[i].GetComponent <Enemy_Boss>();

                    if (e)
                    {
                        CameraShaker.Instance.ShakeOnce(1f, 4f, 0.1f, 0.1f);
                        e.TakeDamage(damage);
                    }
                    if (e2)
                    {
                        CameraShaker.Instance.ShakeOnce(1f, 4f, 0.1f, 0.1f);
                        e2.TakeDamage(damage);
                    }
                    if (e3)
                    {
                        CameraShaker.Instance.ShakeOnce(1f, 4f, 0.1f, 0.1f);
                        e3.TakeDamage(damage);
                    }
                    if (eb)
                    {
                        CameraShaker.Instance.ShakeOnce(1f, 4f, 0.1f, 0.1f);
                        eb.TakeDamage(damage);
                    }
                }

                timeBtwAttack = startTimeBtwAttack;
            }
        }
        else
        {
            timeBtwAttack -= Time.deltaTime;
        }
    }