I’t trying to make it, so when the player clicks on a unit it will select it, and draw a box around the edge on it. I’ve been looking at other questions but I couldn’t get a good answer.
Also the unit will have a specific tag like “unit” and you only can select that specific unit with that tag name.
So this is what I have got now…
#pragma strict
var selected : Transform;
var mask : LayerMask = -1;
var hit : RaycastHit;
function Update() {
if(Input.GetMouseButtonDown(0) && Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), hit, Mathf.Infinity, mask.value)) {
if(hit.transform.tag == "Selected") {
hit.transform.tag = "Unselected";
selected = null;
}
else if(!selected) {
selected = hit.transform;
selected.tag = "Selected";
}
Debug.Log("clicked" + (selected? "" : " off"));
}
}
This should check 1/ if object is currently selected, remove reference; and 2/ if object is new selection, remove old reference and store new one. Also, only do raycast if the mouse is pressed, more efficient.
#pragma strict
var selected : Transform;
var mask : LayerMask = -1;
var hit : RaycastHit;
function Update()
{
if ( Input.GetMouseButtonDown(0) )
{
if ( Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), hit, Mathf.Infinity, mask.value) )
{
// if object is currently selected, remove reference
if ( hit.transform == selected )
{
selected.tag = "Unselected";
selected = null;
}
// if object is new selection, remove old reference and store new one
else if ( hit.transform.tag == "Unselected" )
{
if ( selected ) // remove old reference
{
selected.tag = "Unselected";
selected = null;
}
// store new one
hit.transform.tag = "Selected";
selected = hit.transform;
}
// not sure what this debug is doing !
//Debug.Log( "clicked" + (selected? "" : " off") );
Debug.Log( "clicked " + hit.transform.name + " : selected Object " + selected );
}
}
}
Yer I got it working by…
var hit : RaycastHit;
function Update() {
if(Input.GetMouseButtonDown(0)) {
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, hit, 100)) {
print (hit.transform.tag + ":-:" + hit.transform.name);
var allboxes = hit.transform.Find("yellowbox");
allboxes.transform.renderer.material.mainTexture = selectortext;
}
}
}