// Use this for initialization
    void Start()
    {
        m_Animator       = GetComponent <Animator>();
        m_EnemyBehaviour = GetComponent <SimpleEnemyBehaviour>();

        m_AI.OpenBranch(

            BT.If(() => { return(m_EnemyBehaviour.CurrentTarget != null); }).OpenBranch(
                BT.Call(m_EnemyBehaviour.CheckTargetStillVisible),
                //Run to target
                BT.If(() => { return(!m_EnemyBehaviour.CheckMeleeAttack()); }).OpenBranch(
                    BT.Call(() => m_EnemyBehaviour.RunToTarget(0.2f))
                    ),
                //Attack
                BT.If(() => { return(m_EnemyBehaviour.CheckMeleeAttack()); }).OpenBranch(
                    BT.Call(m_EnemyBehaviour.StopPatrolling),
                    BT.Call(m_EnemyBehaviour.StopRunning),
                    BT.Call(m_EnemyBehaviour.PerformMeleeAttack),
                    BT.Wait(0.5f),
                    BT.WaitForAnimatorState(m_Animator, "MiniSoldier_Idle")
                    )
                ),

            //Patrolling Around
            BT.If(() => { return(m_EnemyBehaviour.CurrentTarget == null); }).OpenBranch(
                BT.Call(m_EnemyBehaviour.ScanForTarget),
                BT.Call(() => m_EnemyBehaviour.Patrolling(0.2f))
                )
            );
    }
Exemplo n.º 2
0
    public void spawnEnemy()
    {
        GameObject           enemy = Instantiate(enemyModel, new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, -1f), gameObject.transform.rotation);
        SimpleEnemyBehaviour beh   = enemy.AddComponent <SimpleEnemyBehaviour>();

        beh._player = _player;
        beh.speed   = enemySpeed;
        beh.Handler = Handler;
    }
Exemplo n.º 3
0
 void OnCollisionEnter2D(Collision2D col)
 {
     Debug.Log(col.collider.gameObject.tag);
     if (col.collider.gameObject.CompareTag("Enemy"))
     {
         SimpleEnemyBehaviour s = col.collider.gameObject.GetComponent <SimpleEnemyBehaviour>();
         if (cooldownTimer > 0)
         {
             s.damage(damage);
         }
     }
 }
    // Use this for initialization
    void Awake()
    {
        m_Animator       = GetComponent <Animator>();
        m_EnemyBehaviour = GetComponentInParent <SimpleEnemyBehaviour>();
        m_RigidBody2D    = GetComponentInParent <Rigidbody2D>();

        m_AI.OpenBranch(
            BT.If(() => { return(m_EnemyBehaviour.CurrentTarget != null); }).OpenBranch(
                BT.Call(m_EnemyBehaviour.CheckTargetStillVisible),
                //BT.If(() => { return !m_EnemyBehaviour.CheckMeleeAttack(); }).OpenBranch(
                //    BT.If(() => { return !m_EnemyBehaviour.CheckForObstacle(0.3f); }).OpenBranch(
                //        BT.Call(() => m_EnemyBehaviour.RunToTarget(0.2f)),
                //        BT.WaitUntil(() => { return m_EnemyBehaviour.CheckForObstacle(0.3f); }),
                //        BT.Call(m_EnemyBehaviour.StopRunning)
                //    )
                //),
                //Attack
                //BT.If(() => { return m_EnemyBehaviour.CheckMeleeAttack(); }).OpenBranch(
                BT.Call(m_EnemyBehaviour.OrientToTarget),
                BT.Call(m_EnemyBehaviour.StopPatrolling),
                BT.Call(() => m_Animator.SetTrigger(m_EnemyBehaviour.HashMeleeAttackPara)),
                BT.Wait(0.5f),
                BT.WaitForAnimatorState(m_Animator, "BoneKnight_Idle"),
                BT.Wait(1f),
                BT.Call(m_EnemyBehaviour.ForgetTarget)
                //)
                ),

            //Patrolling Around
            BT.If(() => { return(m_EnemyBehaviour.CurrentTarget == null); }).OpenBranch(
                BT.Call(m_EnemyBehaviour.ScanForTarget),
                BT.Call(() => m_EnemyBehaviour.Patrolling(0.3f))
                )

            );
    }
    void spawnRandom(int x, int z)
    {
        //get a random enemy
        int rand = (int)Random.Range(0, enemies.Count);

        GameObject randObj = enemies[rand];

        int randRot = (int)Random.Range(0, 360);
        int randa   = (int)Random.Range(0, 2);
        int randb   = (int)Random.Range(0, 2);
        int randc   = (int)Random.Range(0, 2);

        //randObj.transform.rotation = Quaternion.Euler(0, randRot, 0);

        if (rand == 0)//simple turret
        {
            SimpleEnemyBehaviour behav = randObj.GetComponent <SimpleEnemyBehaviour>();
            if (randa == 1)
            {
                behav.shoot1 = true;
            }
            else
            {
                behav.shoot2 = true;
                behav.shoot1 = false;
            }

            if (randb == 1)
            {
                behav.lookAt = true;
            }
            else
            {
                behav.lookAt = false;
            }

            if (randc == 1)
            {
                behav.hasShield = true;
            }
            else
            {
                behav.hasShield = false;
            }
        }

        if (rand == 1)//simple ufo
        {
            SimpleEnemyBehaviour behav = randObj.GetComponent <SimpleEnemyBehaviour>();
            if (randa == 1)
            {
                behav.shoot1 = false;
                behav.shootmultipleDiamond = true;
            }
            else
            {
                behav.shoot1 = false;
                behav.shootmultipleDiamond = false;
                behav.shootMultipleCross   = true;
            }

            if (randb == 1)
            {
                behav.lookAt = true;
            }
            else
            {
                behav.lookAt = false;
            }

            if (randc == 1)
            {
                behav.hasShield = true;
            }
            else
            {
                behav.hasShield = false;
            }
        }

        if (rand == 2)//moving enemy
        {
            if (randa == 1)
            {
                randObj.GetComponent <MovingEnemy>().hasfrontShield = true;
            }
            else
            {
                randObj.GetComponent <MovingEnemy>().hasfrontShield = false;
            }
        }


        Instantiate(randObj, new Vector3(x, 1, z), Quaternion.Euler(0, randRot, 0));
    }