Exemplo n.º 1
0
 public void Activate()
 {
     if (currentState == Enemy1State.Inactive)
     {
         currentState = Enemy1State.Activated;
     }
 }
Exemplo n.º 2
0
 public void Activate()
 {
     if (currentState == Enemy1State.Inactive)
     {
         currentState = Enemy1State.Activated;
         startTime    = Time.time;
     }
 }
Exemplo n.º 3
0
 // 攻撃
 void Attack()
 {
     if (m_State != Enemy1State.Attack)
     {
         m_State = Enemy1State.Attack;
         // カウンターをリセット
         m_AttackCount = 0;
     }
 }
Exemplo n.º 4
0
    // Update is called once per frame
    void Update()
    {
        if (m_Target == null)
        {
            SetTarget();
        }



        // 一定間隔で追従目標を変更
        if (m_ChangeTargetCount >= m_ChangeTargetInterval)
        {
            SetTarget();
        }

        // 麻痺中でなければ
        if (!m_IsParalysis)
        {
            // プレイヤーが攻撃範囲に入ると、攻撃する
            if (m_Target == null)
            {
                return;
            }
            else
            {
                float m_Distance = Vector3.Distance(transform.position, m_Target.position);
                if (m_Distance <= m_Range && GameManager.Instance.m_PlayMode != PlayMode.Combine && GameManager.Instance.m_PlayMode != PlayMode.Release && !m_IsParalysis)
                {
                    Attack();
                }
            }

            // 目標変更カウンター
            ++m_ChangeTargetCount;

            // 攻撃カウンター
            if (m_State == Enemy1State.Attack)
            {
                ++m_AttackCount;
            }
            if (m_AttackCount >= m_AttackInterval)
            {
                m_State = Enemy1State.Move;
            }
        }

        // 麻痺カウンター
        --m_ParalysisCount;

        if (m_ParalysisCount <= 0)
        {
            m_IsParalysis = false;
        }
    }
Exemplo n.º 5
0
    private bool m_IsParalysis;             // 麻痺しているか

    // Use this for initialization
    void Start()
    {
        m_Rigidbody         = GetComponent <Rigidbody>();
        m_Agent             = GetComponent <NavMeshAgent>();
        m_Agent.destination = new Vector3(0.0f, 0.0f, 0.0f);

        // 追従目標を指定
        SetTarget();
        m_State       = Enemy1State.Move;
        m_AttackCount = 0;

        m_IsParalysis = false;
    }
Exemplo n.º 6
0
 public void Death()
 {
     gm.score += scoreWorth;
     gm.UpdateScore();
     currentState = Enemy1State.Dead;
     fabCtrl.PlaySoundEnemy1Destroyed();
     //GetComponent<SpriteRenderer>().enabled = false;
     GetComponent <BoxCollider2D>().enabled = false;
     foreach (MeshRenderer mesh in mr)
     {
         mesh.enabled = false;
     }
     dp.DeathFX();
 }
Exemplo n.º 7
0
 public void Death()
 {
     //die
     gm.score += scoreWorth;
     gm.UpdateScore();
     currentState = Enemy1State.Dead;
     fabCtrl.PlaySoundEnemy1Destroyed();
     GetComponent <SpriteRenderer>().enabled   = false;
     GetComponent <CircleCollider2D>().enabled = false;
     GetComponentInChildren <Fire>().StopFire();
     GetComponentInChildren <Smoke>().StopSmoke();
     dp.DeathFX();
     //gameObject.SetActive(false);
 }
Exemplo n.º 8
0
 void OnTriggerEnter(Collider other)
 {
     if (other.gameObject.tag == "PlayerProjectile")
     {
         //Instantiate(prjectilePrefab, transform.position, transform.rotation);
         state = Enemy1State.Die;
         Destroy(this.gameObject, 1f);
     }
     if (other.gameObject.tag == "Grenade")
     {
         Instantiate(grenadeExplosionPrefab, transform.position, transform.rotation);
         this.transform.position += transform.up * 4.5f * Time.deltaTime;
         state = Enemy1State.GrenadeDie;
         Destroy(this.gameObject, 1.2f);
     }
 }
Exemplo n.º 9
0
    IEnumerator WaitForTime()
    {
        yield return(new WaitForSeconds(0.2f));

        state = Enemy1State.FirstMove;
        transform.position += transform.right * -m_speed * Time.deltaTime;
        yield return(new WaitForSeconds(0.5f));

        state = Enemy1State.Walking;
        transform.position += transform.right * -m_speed * Time.deltaTime;
        if (mDistance < 1.5f)
        {
            state = Enemy1State.Kill;
            if (mDistance < 0.5f)
            {
                state = Enemy1State.Die;
            }
            Destroy(this.gameObject, 2);
        }
    }
Exemplo n.º 10
0
	// Update is called once per frame
    void Update()
    {  
        //控制敌人1各种状态之间的切换
        mtime += Time.deltaTime; 
        mDistance=Vector3.Distance(transform.position, player.transform.position);
        if (mDistance < 0.5f) {
            state = Enemy1State.Die;
        }
        //StartCoroutine(WaitForTime());
        if (enemy1 != null)
        {
            switch (state)
            {
                case Enemy1State.Idle:
                    enemy1Idle.SetActive(true);
                    enemy1FirstMove.SetActive(false);
                    enemy1grenadeDie.SetActive(false);
                    enemy1Kill.SetActive(false);
                    enemy1Walking.SetActive(false);
                    enemy1Die.SetActive(false);
                    if (mtime > 1)
                    {
                        state = Enemy1State.Walking;
                    }
                    break;
                case Enemy1State.FirstMove:
                    transform.position += transform.right * -m_speed * Time.deltaTime;
                    enemy1Idle.SetActive(false);
                    enemy1FirstMove.SetActive(true);
                    enemy1grenadeDie.SetActive(false);
                    enemy1Kill.SetActive(false);
                    enemy1Walking.SetActive(false);
                    enemy1Die.SetActive(false);
                    break;
                case Enemy1State.GrenadeDie:
                  
                    enemy1Idle.SetActive(false);
                    enemy1FirstMove.SetActive(false);
                    enemy1grenadeDie.SetActive(true);
                    enemy1Kill.SetActive(false);
                    enemy1Walking.SetActive(false);
                    enemy1Die.SetActive(false);
                    break;
                case Enemy1State.Kill:
                    transform.position += transform.right * -m_speed * Time.deltaTime;
                    if (mDistance < 0.5)
                    {
                        state = Enemy1State.Die;
                    }
                    enemy1Idle.SetActive(false);
                    enemy1FirstMove.SetActive(false);
                    enemy1grenadeDie.SetActive(false);
                    enemy1Kill.SetActive(true);
                    enemy1Walking.SetActive(false);
                    enemy1Die.SetActive(false);
                    break;
                case Enemy1State.Walking:
                    if (enemy1Walking != null)
                    {
                        transform.position += transform.right * -m_speed * Time.deltaTime;
                        if (mDistance < 1.5)
                        {
                            state = Enemy1State.Kill;

                        }
                        enemy1Idle.SetActive(false);
                        enemy1FirstMove.SetActive(false);
                        enemy1grenadeDie.SetActive(false);
                        enemy1Kill.SetActive(false);
                        enemy1Walking.SetActive(true);
                        enemy1Die.SetActive(false);
                    }
                    break;
                case Enemy1State.Die:
                    Destroy(this.gameObject, 0.7f);
                    enemy1Idle.SetActive(false);
                    enemy1FirstMove.SetActive(false);
                    enemy1grenadeDie.SetActive(false);
                    enemy1Kill.SetActive(false);
                    enemy1Walking.SetActive(false);
                    enemy1Die.SetActive(true);
                    if (mtime > 10)
                    {
                        Instantiate(enemy1, this.transform.position, transform.rotation);
                    }
                    break;
                default:
                    break;
            }
           
            }
	}
Exemplo n.º 11
0
	void Start () {
        state = Enemy1State.Idle;
	}
Exemplo n.º 12
0
 IEnumerator WaitForTime()
 {
     yield return new WaitForSeconds(0.2f);
     state = Enemy1State.FirstMove;
     transform.position += transform.right * -m_speed * Time.deltaTime;
     yield return new WaitForSeconds(0.5f);
     state = Enemy1State.Walking;
     transform.position += transform.right * -m_speed * Time.deltaTime;
     if (mDistance < 1.5f)
     {
         state = Enemy1State.Kill;
         if (mDistance < 0.5f)
         {
             state = Enemy1State.Die;
         }
         Destroy(this.gameObject,2);
     }
 }
Exemplo n.º 13
0
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "PlayerProjectile")
        {
            //Instantiate(prjectilePrefab, transform.position, transform.rotation);
            state = Enemy1State.Die;
            Destroy(this.gameObject, 1f);
        }
        if (other.gameObject.tag == "Grenade")
        {
            Instantiate(grenadeExplosionPrefab, transform.position, transform.rotation);
            this.transform.position += transform.up * 4.5f * Time.deltaTime;
            state = Enemy1State.GrenadeDie;
            Destroy(this.gameObject, 1.2f);
        }

    }
Exemplo n.º 14
0
    // Update is called once per frame
    void Update()
    {
        //FSM control code below
        switch (state)
        {
        //starts in the default state
        case Enemy1State.DEFAULT:
            destination = transform.position + RandomPosition();
            //add a random position to the enemy's position that the enemy will move to

            //if the player is less than the "chaseDistance" from the enemy, switch to the "CHASE" state
            if (Vector3.Distance(transform.position, player.transform.position) < chaseDistance)
            {
                state = Enemy1State.CHASE;
            }
            else        //move the enemy randomly if the enemy is too far from the enemy
            {
                state = Enemy1State.MOVING;
                agent.SetDestination(destination);      //destination will be a random location
            }

            if (Vector3.Distance(transform.position, player.transform.position) <= attackDistance)
            {
                state = Enemy1State.ATTACK;
            }
            break;

        //Moving state controls random movement
        case Enemy1State.MOVING:
            //Debug.Log("Dest = " + destination);
            //when enemy is < 5 from the random distance, change destination again (done in Default state)
            if (Vector3.Distance(transform.position, destination) < 5)
            {
                state = Enemy1State.DEFAULT;
                //firePoint.shoot = false;
            }
            //if the enemy gets close enough to the player, switch to the chase state and chase the player
            if (Vector3.Distance(transform.position, player.transform.position) < chaseDistance)
            {
                state = Enemy1State.CHASE;
                //firePoint.shoot = false;
            }

            if (Vector3.Distance(transform.position, player.transform.position) <= attackDistance)
            {
                state = Enemy1State.ATTACK;
                //firePoint.shoot = true;
            }
            break;

        //state that chases the player
        case Enemy1State.CHASE:
            //FindObjectOfType<AudioManager>().Play("chase");
            //if the distance b/w the enemy and player exceeds the chase distance, switch to Default state
            if (Vector3.Distance(transform.position, player.transform.position) > chaseDistance)
            {
                //FindObjectOfType<AudioManager>().Play("lost");
                state = Enemy1State.DEFAULT;
                //firePoint.shoot = false;
            }

            if (Vector3.Distance(transform.position, player.transform.position) <= attackDistance)
            {
                state = Enemy1State.ATTACK;
                //firePoint.shoot = true;
            }
            FaceTarget();
            agent.SetDestination(player.transform.position);        //moves the enemy to the player's position

            break;

        //state where the enemy attacks the player
        case Enemy1State.ATTACK:
            //FindObjectOfType<AudioManager>().Play("shoot");

            if (Vector3.Distance(transform.position, player.transform.position) > attackDistance)
            {
                //FindObjectOfType<AudioManager>().Play("get back");
                state = Enemy1State.CHASE;
                //firePoint.shoot = false;
            }

            if (Vector3.Distance(transform.position, player.transform.position) > chaseDistance)
            {
                state = Enemy1State.DEFAULT;
                //firePoint.shoot = false;
            }

            if (Time.time > biteTime)
            {
                //FindObjectOfType<AudioManager>().Play("blaster SFX");
                //firePoint.FireBullet();
                biteTime = Time.time + chewTime;
            }
            FaceTarget();
            agent.SetDestination(player.transform.position);

            break;

        default:
            break;
        }
    }
Exemplo n.º 15
0
    // Update is called once per frame
    void Update()
    {
        //控制敌人1各种状态之间的切换
        mtime    += Time.deltaTime;
        mDistance = Vector3.Distance(transform.position, player.transform.position);
        if (mDistance < 0.5f)
        {
            state = Enemy1State.Die;
        }
        //StartCoroutine(WaitForTime());
        if (enemy1 != null)
        {
            switch (state)
            {
            case Enemy1State.Idle:
                enemy1Idle.SetActive(true);
                enemy1FirstMove.SetActive(false);
                enemy1grenadeDie.SetActive(false);
                enemy1Kill.SetActive(false);
                enemy1Walking.SetActive(false);
                enemy1Die.SetActive(false);
                if (mtime > 1)
                {
                    state = Enemy1State.Walking;
                }
                break;

            case Enemy1State.FirstMove:
                transform.position += transform.right * -m_speed * Time.deltaTime;
                enemy1Idle.SetActive(false);
                enemy1FirstMove.SetActive(true);
                enemy1grenadeDie.SetActive(false);
                enemy1Kill.SetActive(false);
                enemy1Walking.SetActive(false);
                enemy1Die.SetActive(false);
                break;

            case Enemy1State.GrenadeDie:

                enemy1Idle.SetActive(false);
                enemy1FirstMove.SetActive(false);
                enemy1grenadeDie.SetActive(true);
                enemy1Kill.SetActive(false);
                enemy1Walking.SetActive(false);
                enemy1Die.SetActive(false);
                break;

            case Enemy1State.Kill:
                transform.position += transform.right * -m_speed * Time.deltaTime;
                if (mDistance < 0.5)
                {
                    state = Enemy1State.Die;
                }
                enemy1Idle.SetActive(false);
                enemy1FirstMove.SetActive(false);
                enemy1grenadeDie.SetActive(false);
                enemy1Kill.SetActive(true);
                enemy1Walking.SetActive(false);
                enemy1Die.SetActive(false);
                break;

            case Enemy1State.Walking:
                if (enemy1Walking != null)
                {
                    transform.position += transform.right * -m_speed * Time.deltaTime;
                    if (mDistance < 1.5)
                    {
                        state = Enemy1State.Kill;
                    }
                    enemy1Idle.SetActive(false);
                    enemy1FirstMove.SetActive(false);
                    enemy1grenadeDie.SetActive(false);
                    enemy1Kill.SetActive(false);
                    enemy1Walking.SetActive(true);
                    enemy1Die.SetActive(false);
                }
                break;

            case Enemy1State.Die:
                Destroy(this.gameObject, 0.7f);
                enemy1Idle.SetActive(false);
                enemy1FirstMove.SetActive(false);
                enemy1grenadeDie.SetActive(false);
                enemy1Kill.SetActive(false);
                enemy1Walking.SetActive(false);
                enemy1Die.SetActive(true);
                if (mtime > 10)
                {
                    Instantiate(enemy1, this.transform.position, transform.rotation);
                }
                break;

            default:
                break;
            }
        }
    }
Exemplo n.º 16
0
 void Start()
 {
     state = Enemy1State.Idle;
 }