Double click to select all same type rendered objects
I want to implement a 3D feature that is long time present in AOE 2 and red alert series. When we double click a soldier , all soldiers rendered of same type is select. Is there any way I can detect fast and efficiently that small part of game world how many objects of a type is visible to user right now !
Answer by Cynikal · Sep 05, 2016 at 07:40 PM
Add every unit to a master list.
On Double Click, detect the type of unit. Then use a foreach on the master list of any units that match your criteria.
Still 2 questions rise here but most important how many soldiers are visible in master list?
You can use: Renderer.isVisible
I don't know if they changed it yet, but the issue is that it'll display true if ANY camera is rendering it (including the camera in the scene view).
As far as counting, you could do like:
Foreach(var soldier in $$anonymous$$asterListOfSoldiers) { if (soldier.GetComponent().IsVisible) VisibleSoldiers++; }
Answer by Lichemperor · Sep 10, 2016 at 05:09 PM
As Cynikal says: add every unit to a master list. Take a look at the singleton pattern.
Depending on the number of types of units, you could potentially assign an enum type to each soldier (or even an int ID value), then use that to retrieve them from the master list.
You could then follow up with the check to see if they're visible before returning, so you only return a list of visible soldiers of that type.
something along the lines of the following:
public enum SoldierTypes {gunner, bombardier, rifleman}
public Soldier[] GetSoldiersOnScreen(SoldierTypes soldierType ) {
Foreach (Soldier soldier in MasterListOfSolders) {
if (soldier.soldierType == typeParameter && soldier.GetComponent().IsVisible) {
solderList.Add(soldier);
}
}
return soldierList;
}
Your answer
Follow this Question
Related Questions
3D Objects disappear when running the build 0 Answers
Create 3D object from external camera view 0 Answers
Using 3D Render Texture with camera 0 Answers
Invisible object that still receives shadows 0 Answers
Small bug? on ShaderGraph 0 Answers