Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
1
Question by D0CT0RGRAY · Apr 25, 2012 at 06:59 AM · gameobjectarraysortnumerical

Sorting through an array of gameobjects

Hey everyone, So let me start out by saying what my goal is for this script. What I want to be able to do is:

 1. Look for objects tagged as an 'Enemy'
 2. Find the closest object tagged as an 'Enemy'
 3. Draw a GUI Texture ontop of it when the player presses Tab
 4. Draw the same GUI Texture on the 2nd closest object if Tab is pressed again
 5. Draw the same GUI Texture on the 3rd and so on...

I have steps 1 - 3 working, but I can't seem to be able to sort the game objects correctly. Here's an example of my code

 // the current target
 
 private var target : Transform;
 
 var nearestObj : Transform = null;
 
 function Update() {
 
     if (Input.GetKeyDown("tab")) {
         target = GetNearestTaggedObject();
         nearestObj.GetComponent("TargetSelectingIcon").DrawSelect();
     }
     if (Input.GetKeyDown("return")){
         target = GetNearestTaggedObject();
         nearestObj.GetComponent("TargetSelectingIcon").DrawLock();        
     }
     if (Input.GetKeyDown("escape")){
         target = GetNearestTaggedObject();
         nearestObj.GetComponent("TargetSelectingIcon").DrawNone();
     }
 }
 
 function GetNearestTaggedObject() : Transform {
     // and finally the actual process for finding the nearest object:
 
     var nearestDistanceSqr = Mathf.Infinity;
     var taggedGameObjects = GameObject.FindGameObjectsWithTag("Enemy"); 
 
     // loop through each tagged object, remembering nearest one found
     for (var obj : GameObject in taggedGameObjects) {
 
         var objectPos = obj.transform.position;
         var distanceSqr = (objectPos - transform.position).sqrMagnitude;
         var storeValue = new Array();
         storeValue[taggedGameObjects.length] = distanceSqr;
         storeValue.Sort(sortScore);
         print(storeValue[taggedGameObjects.length]);
 
         if (storeValue[taggedGameObjects.length] < nearestDistanceSqr) {
             nearestObj = obj.transform;
             nearestDistanceSqr = storeValue[taggedGameObjects.length];
         }
     }
 }
 
 function sortScore (a, b){
     //sorts an array numerically ascending
     return (a - b);
 }
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by D0CT0RGRAY · May 11, 2012 at 05:34 AM

Found out the answer after extensive trial and error

I just needed a new array at the beginning:

 var targetsInScene = new Array();

Then I needed to make sure it was getting set to the obj.transform from the associative array:

 targetsInScene[i] = obj.transform;

And presto! I'm able to access objects in an associative array individually. There's probably a better method for this out there, but the best one I have right now is the one that works ^^

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Sort array by ascending numerical order 1 Answer

Order a GameObject array based on an int property of each object? 1 Answer

[C#] Sorting a List of Gameobjects Alphabetically 2 Answers

Ordering an array of GO based on interfaced variables using linq. 1 Answer

Checking if a position is occupied in 2D? 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges