Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

The current targeting code below changes the color of the enemy with tab button:

  • Target enemy = change color of enemy to 'green'
  • Deselect enemy = change color of enemy to 'blue' (press tab again)

I want this instead:

  • target enemy = A transparent animated spotlight appears over top the enemy (press tab)
  • deselect enemy = spotlight disappears over time.0.08f. (press tab again)

I have the images for the spotlight ready! I just don't know how to implement correctly! sorry if my code makes you cry, I'm VERY new to this stuff

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Targetting : MonoBehaviour {
public List<Transform> targets;
public Transform selectedTarget;

private Transform myTransform;

// Use this for initialization
void Start () {
targets = new List<Transform>();
selectedTarget = null;
myTransform = transform;

AddAllEnemies();
}

public void AddAllEnemies()
{
GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");

foreach(GameObject enemy in go)
AddTarget(enemy.transform);
}

public void AddTarget(Transform enemy)
{
targets.Add(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));
});
}


private void TargetEnemy()
{
if(selectedTarget == null)
{
SortTargetsByDistance();
selectedTarget = targets[0];
}
else
{
int index = targets.IndexOf(selectedTarget);

if(index < targets.Count -1)
{
index++;
}
else
{
index = 0;
}
DeselectTarget();
selectedTarget = targets[index];
}
SelectTarget();
}

private void SelectTarget()
{
selectedTarget.renderer.material.color = Color.green;
}

private void DeselectTarget()
{
selectedTarget.renderer.material.color = Color.blue;
selectedTarget = null;
}

// Update is called once per frame
void Update()
{
if(Input.GetKeyDown(KeyCode.Tab))
{
TargetEnemy();
}
}

}
share|improve this question
2  
This question appears to be off-topic because it is about writing your code for you. –  Anko Jun 30 at 21:00
    
So am I completely off in my code ? I wrote this code thinking only the green and blue portion of the code could be easily adjusted and I just didn't know how. Perhaps I'm in the wrong place for this. Should I go to another place to post this question? –  Aceleeon Jun 30 at 22:32
    
Just set your spot light gameobjects position to your enemy's position –  Savlon Jul 5 at 1:50
    
Ok. I'll try that. I'm not quite sure how to do that to be honest. –  Aceleeon Jul 5 at 1:59
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.