- Home /
Cannot lock onto enemies after they have been killed
Hey guys,
I'm working on refining a lock-on script I have for a school project I'm working on. Right now, it works as it should locking onto enemies and cycling through them. When I kill one of these enemies though, then walk into a spawn point we have, set up. The enemies spawn, but I cannot lock onto them, even though they are tagged the same as the previous and are being found just like the enemies we have spawn at the start of the game....
Is there a way to solve this?
Here's the Lock-on code which has been edited and adapted from BurgZerg Arcades targetting system.
//The start of the lock-on system
public void AddAllEnemies()
{
GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");
foreach(GameObject enemy in go)
AddTarget(enemy.transform);
}
public void AddTarget(Transform enemy)
{
targets.Add (enemy);
}
public void RemoveTarget(Transform enemy)
{
targets.Remove (enemy);
}
private void SortTargetsByDistance()
{
targets.Sort (delegate(Transform t1, Transform t2) {
return Vector3.Distance(t1.position, myTransform.position).CompareTo(Vector3.Distance(t2.position, myTransform.position));
});
}
public void TargetEnemy()
{
if(selectedTarget)
{
SortTargetsByDistance();
selectedTarget = targets[0];
}
else
{
int index = targets.IndexOf (selectedTarget);
if(index < targets.Count - 1)
{
index++;
}
else
{
index = 0;
}
selectedTarget = targets[index];
}
if(lockOn == true && selectedTarget == true)
{
GameObject[] lockOnTransforms = GameObject.FindGameObjectsWithTag("LockOn");
foreach(GameObject lockOnTransform in lockOnTransforms)
{
Destroy(lockOnTransform);
}
Transform lockOnClone = Instantiate(lockOn, transform.position, Quaternion.identity) as Transform;
lockOnClone.position = selectedTarget.position + new Vector3(0f, 4.5f, 0f);
lockOnClone.parent = selectedTarget.transform;
}
}
void DeselectTarget()
{
selectedTarget = null;
LockedOn = false;
}
IEnumerator DeselectEnemy()
{
deselectTimer = false;
yield return new WaitForSeconds(0.5f);
deselectTimer = true;
LockedOn = false;
}
Answer by MickM · Oct 03, 2012 at 10:12 PM
From a quick glance, it appears that when you are Instantiating your clone, they aren't being added to your target list. This means you cant cycle through the newly created enemies because the list just has your old ones?
Try add AddTarget(lockOnClone) after you Instantiate it? (Unless this is already being called in your enemy script.)
Thank you for the help! It didn't work at first but then after a little bit more tweaking we got it to work. :D
Your answer
![](https://koobas.hobune.stream/wayback/20220613081835im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Variable target in 'Targetting system' error. 1 Answer
AI Target Finding Optimization 0 Answers
FOV sensitive Lock-on? 1 Answer
Need A Combat System. 0 Answers
Optimising for large groups of enemies 3 Answers