// 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)) ) ); }
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; }
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)); }