- Home /
Object selection
Hi.. I have three objects and I need to select those three objects in random and not in a order. can anyone help me? Below is the code I have for selecting in a particular order.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Random : MonoBehaviour {
public List targets;
public Transform selectedTarget;
private Transform myTransform;
// Use this for initialization
void Start () {
targets = new List();
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 SortTargetsByRandom() {
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) {
SortTargetsByRandom();
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.red;
}
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();
}
}
}
I formatted your code for you, and tweaked the questions. Do you have anything to say about what is wrong with your code? It's not clear whether the code you have works or not. What does it do? I think if you want some help it's good to explain more about the problem you have.
I am trying to select one cube out of three cubes in random which I have already created in my scene. I will be selecting each cube by pressing tab and the selected cube will turn into red color and deselected cube will turn to blue. I dont know what function to use for selecting in random. can you help me please?
Answer by DannyB · Aug 03, 2012 at 02:12 PM
Use Random.Range( min, max ) or Random.value, both are documented here.
If you have an array of objects you wish to choose from, your code may look something like this:
GameObject selectedObject = ObjectsArray[Random.Range(0,ObjectsArray.Length)];
Also, you should probably avoid naming your class "Random".
Your answer
Follow this Question
Related Questions
AI random target 2 Answers
Selecting Random Object and Setting Variable to True 2 Answers
if object is destroyed 2 Answers
Yield after spawning object 1 Answer
Make an object move towards random spot on another objects edge? 1 Answer