Exemplo n.º 1
0
 protected override void SetTarget()
 {
     if (tpInput.tpCamera != null)
     {
         tpInput.tpCamera.SetLockTarget(currentTarget.transform, cameraHeightOffset);
         onLockOnTarget.Invoke(currentTarget);
     }
 }
Exemplo n.º 2
0
 public virtual void StopLockOn()
 {
     if (currentTarget == null && tpInput.tpCamera != null)
     {
         onUnLockOnTarget.Invoke(tpInput.tpCamera.lockTarget);
         tpInput.tpCamera.RemoveLockTarget();
         isLockingOn = false;
         inTarget    = false;
     }
 }
Exemplo n.º 3
0
    void MultiLock()
    {
        if (enemy.MultiLockEnemy.Count == 0)
        {
            return;
        }
        var enemysInSight = enemy.MultiLockEnemy
                            .Where(x => Mathf.Cos(Mathf.PI * LockOnDegreeThreshold / 90) < Vector3.Dot(transform.forward, (x.transform.position - transform.position).normalized))
                            .OrderByDescending(x => Mathf.Cos(Mathf.PI * LockOnDegreeThreshold / 90) < Vector3.Dot(transform.forward, (x.transform.position - transform.position).normalized));

        if (enemysInSight.Count() == 0)
        {
            return;
        }
        var e = enemysInSight.First().GetComponent <IEnemy>();

        if (LockedEnemys.Count < LockOnLimit && e.Health > 0)
        {
            LockedEnemys.Add(enemysInSight.First().transform);
            e.Health--;
            if (e.Health <= 0)
            {
                e.KillSelf();
            }
            e.lockOn = this;
            if (enemysInSight.Count() > 0)
            {
                onLockOnEvent.Invoke(enemysInSight.First().transform.position);
            }
            Quantize.QuantizePlay(audio);
        }
        else
        {
            onLockOnFailedEvent.Invoke(enemysInSight.First().transform.position);
        }
    }