void Start()
 {
     state = Enemy3State.Idle;
     transform.localScale = new Vector3(1, 1, 1);
     player           = GameObject.FindGameObjectWithTag("Player");
     playerController = GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerController>();
 }
Exemple #2
0
 void Start()
 {
     state = Enemy3State.Idle;
     transform.localScale = new Vector3(1,1,1);
     player = GameObject.FindGameObjectWithTag("Player");
     playerController = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>();
 }
Exemple #3
0
 public void Activate()
 {
     if (currentState == Enemy3State.Inactive)
     {
         currentState = Enemy3State.Activated;
     }
 }
Exemple #4
0
 public void Death()
 {
     gm.score += scoreWorth;
     gm.UpdateScore();
     currentState = Enemy3State.Dead;
     fabCtrl.PlaySoundEnemy3Destroyed();
     GetComponent <SpriteRenderer>().enabled = false;
     GetComponent <BoxCollider2D>().enabled  = false;
     //animation + effects?
 }
 void OnTriggerEnter(Collider other)
 {
     if (other.gameObject.tag == "PlayerProjectile")
     {
         isDie = true;
         Instantiate(enemyExplosion, transform.position, transform.rotation);
         Destroy(other.gameObject);
         state = Enemy3State.Die;
         Destroy(this.gameObject, 1f);
     }
     if (other.gameObject.tag == "Grenade")
     {
         Instantiate(grenadeExplosionPrefab, transform.position, transform.rotation);
         this.transform.position += transform.up * 6.5f * Time.deltaTime;
         state = Enemy3State.GrenadeDie;
         Destroy(this.gameObject, 1.2f);
     }
 }
    void FixedUpdate()
    {
        Vector3    direction = (player.transform.position - this.transform.position).normalized;
        Ray        ray       = new Ray(this.transform.position, direction);
        RaycastHit hitinfo;
        bool       isPlayer = Physics.Raycast(ray, out hitinfo, 0.5f);

        if (isPlayer)
        {
            if (playerController != null && playerController.Projectile && transform.localScale.x == -player.transform.localScale.x)
            {
                state = Enemy3State.Die;
                isDie = true;
                Instantiate(enemyExplosion, this.transform.position, Quaternion.identity);
                Destroy(this.gameObject, 0.4f);
            }
            isPlayer = false;
        }
        //Debug.DrawLine(transform.position, ray.direction, Color.red, 1);
    }
Exemple #7
0
    // Update is called once per frame
    void Update()
    {

        if (transform.position.x - player.transform.position.x > 0)
        {
            transform.localScale = new Vector3(1, 1, 1);

        }
        else
        {
            transform.localScale = new Vector3(-1, 1, 1);

        }
      
        //控制敌人1各种状态之间的切换
        mtime += Time.deltaTime;
        switch (state)
        {
            case Enemy3State.Idle:
                enemy3Idle.SetActive(true);
                enemy3Die.SetActive(false);
                enemy3grenadeDie.SetActive(false);
                enemy3Shoot.SetActive(false);
                enemy3ShootWalking.SetActive(false);
                break;
            case Enemy3State.Die: 
                if (mtime > 1.5f)
                {
                    AudioSource.PlayClipAtPoint(enemyDie, new Vector3(transform.position.x,
                  transform.position.y, transform.position.z));
                    mtime = 0;
                    
                }
                if (enemy3Die != null) {
                    enemy3Die.SetActive(true);
                    enemy3Idle.SetActive(false);
                    enemy3grenadeDie.SetActive(false);
                    enemy3Shoot.SetActive(false);
                    enemy3ShootWalking.SetActive(false);
                    Destroy(this.gameObject,2f);
                }
                break;
            case Enemy3State.GrenadeDie: 
                if (mtime > 1.5f)
                {
                    AudioSource.PlayClipAtPoint(enemyDie, new Vector3(transform.position.x,
                  transform.position.y, transform.position.z));
                    mtime = 0;
                   
                }
                    enemy3Idle.SetActive(false);
                    enemy3Die.SetActive(false);
                    enemy3grenadeDie.SetActive(true);
                    enemy3Shoot.SetActive(false);
                    enemy3ShootWalking.SetActive(false);
                    if (enemy3grenadeDie != null) {
                        Destroy(this.gameObject,2f);
                    }
               
                break;
            case Enemy3State.Shoot:
                if (isDie)
                {
                    state = Enemy3State.Die;
                    isDie = false;
                }
                    enemy3Idle.SetActive(false);
                    enemy3Die.SetActive(false);
                    enemy3grenadeDie.SetActive(false);
                    enemy3Shoot.SetActive(true);
                    enemy3ShootWalking.SetActive(false);
                    timer -= Time.deltaTime;
                    if (timer <= 0 && Mathf.Abs(transform.position.x - player.transform.position.x) < 3.5f)
                    {
                        ShootBall();
                        timer = 0.8f;
                    }
                  
                break;
            case Enemy3State.ShootWalking:
                transform.position=Vector2.MoveTowards(transform.position,player.transform.position,Time.deltaTime*1f);
                enemy3Idle.SetActive(false);
                enemy3Die.SetActive(false);
                enemy3grenadeDie.SetActive(false);
                enemy3Shoot.SetActive(false);
                enemy3ShootWalking.SetActive(true);
                
                break;
            default:
                break;
        }
        if (transform.position.x - player.transform.position.x < 8)
        {
            state = Enemy3State.ShootWalking;
            if (isDie) {
                state = Enemy3State.Die;
                
            }

        }
        if (Mathf.Abs(transform.position.x - player.transform.position.x) < 3.5f)
        {
            state = Enemy3State.Shoot;
            if (isDie)
            {
                state = Enemy3State.Die;
                
            }
        }
    }
Exemple #8
0
 void FixedUpdate()
 {
     Vector3 direction = (player.transform.position - this.transform.position).normalized;
     Ray ray = new Ray(this.transform.position, direction);
     RaycastHit hitinfo;
     bool isPlayer = Physics.Raycast(ray, out hitinfo, 0.5f);
     if (isPlayer)
     {
         if (playerController!=null&&playerController.Projectile&&transform.localScale.x==-player.transform.localScale.x)
         {
             state = Enemy3State.Die;
             isDie = true;
             Instantiate(enemyExplosion, this.transform.position, Quaternion.identity);
             Destroy(this.gameObject, 0.4f);
         }
         isPlayer = false;
     }
     //Debug.DrawLine(transform.position, ray.direction, Color.red, 1);
 }
Exemple #9
0
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "PlayerProjectile")
        {
            isDie = true;
            Instantiate(enemyExplosion, transform.position, transform.rotation);
            Destroy(other.gameObject);
            state = Enemy3State.Die;
            Destroy(this.gameObject, 1f);
        }
        if (other.gameObject.tag == "Grenade")
        {
            Instantiate(grenadeExplosionPrefab, transform.position, transform.rotation);
            this.transform.position += transform.up * 6.5f * Time.deltaTime;
            state = Enemy3State.GrenadeDie;
            Destroy(this.gameObject, 1.2f);
        }

    }
    // Update is called once per frame
    void Update()
    {
        if (transform.position.x - player.transform.position.x > 0)
        {
            transform.localScale = new Vector3(1, 1, 1);
        }
        else
        {
            transform.localScale = new Vector3(-1, 1, 1);
        }

        //控制敌人1各种状态之间的切换
        mtime += Time.deltaTime;
        switch (state)
        {
        case Enemy3State.Idle:
            enemy3Idle.SetActive(true);
            enemy3Die.SetActive(false);
            enemy3grenadeDie.SetActive(false);
            enemy3Shoot.SetActive(false);
            enemy3ShootWalking.SetActive(false);
            break;

        case Enemy3State.Die:
            if (mtime > 1.5f)
            {
                AudioSource.PlayClipAtPoint(enemyDie, new Vector3(transform.position.x,
                                                                  transform.position.y, transform.position.z));
                mtime = 0;
            }
            if (enemy3Die != null)
            {
                enemy3Die.SetActive(true);
                enemy3Idle.SetActive(false);
                enemy3grenadeDie.SetActive(false);
                enemy3Shoot.SetActive(false);
                enemy3ShootWalking.SetActive(false);
                Destroy(this.gameObject, 2f);
            }
            break;

        case Enemy3State.GrenadeDie:
            if (mtime > 1.5f)
            {
                AudioSource.PlayClipAtPoint(enemyDie, new Vector3(transform.position.x,
                                                                  transform.position.y, transform.position.z));
                mtime = 0;
            }
            enemy3Idle.SetActive(false);
            enemy3Die.SetActive(false);
            enemy3grenadeDie.SetActive(true);
            enemy3Shoot.SetActive(false);
            enemy3ShootWalking.SetActive(false);
            if (enemy3grenadeDie != null)
            {
                Destroy(this.gameObject, 2f);
            }

            break;

        case Enemy3State.Shoot:
            if (isDie)
            {
                state = Enemy3State.Die;
                isDie = false;
            }
            enemy3Idle.SetActive(false);
            enemy3Die.SetActive(false);
            enemy3grenadeDie.SetActive(false);
            enemy3Shoot.SetActive(true);
            enemy3ShootWalking.SetActive(false);
            timer -= Time.deltaTime;
            if (timer <= 0 && Mathf.Abs(transform.position.x - player.transform.position.x) < 3.5f)
            {
                ShootBall();
                timer = 0.8f;
            }

            break;

        case Enemy3State.ShootWalking:
            transform.position = Vector2.MoveTowards(transform.position, player.transform.position, Time.deltaTime * 1f);
            enemy3Idle.SetActive(false);
            enemy3Die.SetActive(false);
            enemy3grenadeDie.SetActive(false);
            enemy3Shoot.SetActive(false);
            enemy3ShootWalking.SetActive(true);

            break;

        default:
            break;
        }
        if (transform.position.x - player.transform.position.x < 8)
        {
            state = Enemy3State.ShootWalking;
            if (isDie)
            {
                state = Enemy3State.Die;
            }
        }
        if (Mathf.Abs(transform.position.x - player.transform.position.x) < 3.5f)
        {
            state = Enemy3State.Shoot;
            if (isDie)
            {
                state = Enemy3State.Die;
            }
        }
    }