コード例 #1
0
    public void OnTriggerEnter2D(Collider2D other)
    {
        IArrowHolder           arrowHolder = other.GetComponent <IArrowHolder>();
        EnemyMovementBehaviour EMB         = other.gameObject.GetComponent <EnemyMovementBehaviour>();

        if (arrowHolder != null)
        {
            OnPickedUpBy(arrowHolder, this);
            PickUpBy(arrowHolder);
        }

        if (CurrentState == State.InFlight) // Resting arrows shouldn't hit people
        {
            ITarget target = other.GetComponent <ITarget>();

            if (target != null)
            {
                OnHit(other, target, this);
                Hit(target, other.ClosestPoint(transform.position));
            }

            if (other.gameObject.tag == "Enemy")
            // kill enemy
            {
                EMB.dead = true;
            }
        }
    }
コード例 #2
0
    void FindClosestTarget()
    {
        var temp = Targets;

        for (int i = 0; i < temp.Count; i++)
        {
            if (temp[i] == null)
            {
                temp.RemoveAt(i);
            }
        }
        Targets = temp;
        if (Targets == null || Targets.Count == 0)
        {
            CurrentTarget = null;
            OnTargetChanged.Invoke(null);
            return;
        }
        Targets       = Targets.OrderBy(x => x.DistanceFromTarget).ToList();
        CurrentTarget = Targets[0];
        if (!CurrentTarget)
        {
            return;
        }
        OnTargetChanged.Invoke(CurrentTarget.gameObject);
    }
コード例 #3
0
 public EnemyEntityData(EnemyCollisionBehaviour _ecb, EnemyMovementBehaviour _emb, Transform _g, BoxCollider _boxCollider, EnemyPatrolBehaviour _enemyPatrolBehaviour)
 {
     collider = _boxCollider;
     enemyCollisionBehaviour = _ecb;
     enemyMovementBehaviour  = _emb;
     graphics             = _g;
     enemyPatrolBehaviour = _enemyPatrolBehaviour;
 }
コード例 #4
0
 void OnTriggerExit(Collider other)
 {
     if (Targets.Contains(other.GetComponent <EnemyMovementBehaviour>()))
     {
         Targets.Remove(other.GetComponent <EnemyMovementBehaviour>());
         CurrentTarget = null;
     }
     FindClosestTarget();
 }
コード例 #5
0

        
コード例 #6
0
 private void OnCollisionEnter(Collision collision)
 {
     if (collision.gameObject.layer == 9)
     {
         GameSceneManager.instance.AddPoints(200 * (2 - GameSceneManager.instance.speedMultiplier));
         EnemyMovementBehaviour temp = collision.gameObject.GetComponent <EnemyMovementBehaviour> ();
         temp.StopAllCoroutines();
         temp.enabled = false;
         GameSceneManager.instance.myEnemiesComp.aliveEnemies.Remove(temp);
         if (GameSceneManager.instance.myEnemiesComp.aliveEnemies.Count == 0)
         {
             GameSceneManager.instance.myEnemiesComp.aliveEnemiesReadyForPattern = false;
         }
         GameSceneManager.instance.Explode(temp.transform.position);
         Destroy(collision.gameObject);
     }
     GameObject.Destroy(this.gameObject);
 }
コード例 #7
0
 void OnEnd(EnemyMovementBehaviour EMB)
 {
     completed = true;
 }
コード例 #8
0
 private void Awake()
 {
     _movement = GetComponent <EnemyMovementBehaviour>();
 }
コード例 #9
0
 void OnEnd(EnemyMovementBehaviour EMB)
 {
     cv.enabled = true;
 }
コード例 #10
0
 // Use this for initialization
 void Start()
 {
     myMovementComp = GetComponent <EnemyMovementBehaviour> ();
     myMovementComp.ResetAnimation(positiveLimit, negativeLimit, time, xAnimCurve, yAnimCurve, zAnimCurve);
 }
コード例 #11
0
 void OnEnd(EnemyMovementBehaviour EMB)
 {
     spawnEnemy = false;
 }
コード例 #12
0
 private void Awake()
 {
     //Grabs a refrence to movement behaviour in order to get the enemy's target
     _movement = GetComponent <EnemyMovementBehaviour>();
 }