Пример #1
0
    IEnumerator Didattack()
    {
        animation.CrossFadeQueued("attack", 0.1f, QueueMode.PlayNow);
        yield return(new WaitForSeconds(attackHitTime));

        Vector3 pos = transform.TransformPoint(attackPosition);

        GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");


        foreach (GameObject go in enemies)
        {
            EnemyDamaged enemy = go.GetComponent <EnemyDamaged>();
            if (enemy == null)
            {
                Debug.Log("enemy damage = null");
                continue;
            }



            if (Vector3.Distance(enemy.transform.position, pos) < attackRadius)
            {
                enemy.SendMessage("ApplyDamage", attackDamage);

                /* Play sound.
                 *      if (attackSound)
                 *              audio.PlayOneShot(attackSound);*/
            }
        }
        yield return(new WaitForSeconds(attackTime - attackHitTime));

        busy = false;
    }
Пример #2
0
    void OnCollisionEnter2D(Collision2D other)
    {
        EnemyDamaged enemy = other.collider.GetComponent <EnemyDamaged>();

        if (enemy != null)
        {
            enemy.Damage(despawnTime);
        }
        else
        {
            EnemyDamagedRevives e = other.collider.GetComponent <EnemyDamagedRevives>();
            if (e != null)
            {
                e.Damage(despawnTime);
            }
        }

        /*EnemyControllerCrabtopus cenemy = other.collider.GetComponent<EnemyControllerCrabtopus>();
         * if (cenemy != null)
         * {
         *  cenemy.Damage(despawnTime);
         * }*/

        Destroy(gameObject, despawnTime / 5);
    }
Пример #3
0
    IEnumerator Start()
    {
        characterController = GetComponent <CharacterController>();
        dead = GetComponent <EnemyDamaged>();

        if (!target)
        {
            target = GameObject.FindWithTag("Player").transform;
        }

        animation.Play("Idle");
        animation["Run"].wrapMode = WrapMode.Loop;
        animation ["Attack_Medium_01"].wrapMode = WrapMode.Once;
        animation["Attack_Medium_01"].layer     = 1;


        yield return(new WaitForSeconds(Random.value));


        while (true)
        {
            // Don't do anything when idle. And wait for player to be in range!
            // This is the perfect time for the player to attack us
            yield return(StartCoroutine(wander()));

            //wander();

            // Prepare, turn to player and attack him

            yield return(StartCoroutine(Attack()));
        }
    }
    public void TakeDamage(int damage)
    {
        if ((enemyHealth -= damage) <= 0f)
        {
            Die();
        }

        EnemyDamaged?.Invoke();
        enemyHealth -= damage;
    }
Пример #5
0
    void OnCollisionEnter(Collision hit)
    {
        Vector3 pos = transform.TransformPoint(0, 0, .8f);

        GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
        foreach (GameObject go in enemies)
        {
            EnemyDamaged enemy = go.GetComponent <EnemyDamaged> ();

            if (hit.gameObject.tag == "Enemy" && Vector3.Distance(enemy.transform.position, pos) < 1f)               // compare the object name

            {
                enemy.SendMessage("ApplyDamage", attackHitPoints);
                Destroy(gameObject);
            }
        }
    }
Пример #6
0
 private void Start()
 {
     enemyDamagedScript = GetComponent <EnemyDamaged>();
     BossAnimator       = GetComponent <Animator>();
 }