protected override void SetTarget() { if (tpInput.tpCamera != null) { tpInput.tpCamera.SetLockTarget(currentTarget.transform, cameraHeightOffset); onLockOnTarget.Invoke(currentTarget); } }
public virtual void StopLockOn() { if (currentTarget == null && tpInput.tpCamera != null) { onUnLockOnTarget.Invoke(tpInput.tpCamera.lockTarget); tpInput.tpCamera.RemoveLockTarget(); isLockingOn = false; inTarget = false; } }
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); } }