Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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
0
Question by tmalhassan · Sep 06, 2017 at 06:10 PM · c#menufor-loopscrollminimum

How to find the minimum number in a float array C#

i have a for loop that detects the position of every game object in a list and gets the difference between that object and an object anchored in the center and then stores all values in a float array. what should happen next is find the minimum distance in that array and make that object (the object with the smallest distance) move towards the anchored center. the problem is that no matter what i do, it always gets the maximum number (which is the furthest game object). here is what i have so far:

 public RectTransform panal;
 public GameObject[] characters;
 public RectTransform center;

 private float[] distance;
 private float minDistance;
 private bool isDragging = false;
 private int distanceBetweenCharacters;
 private int minCharNum;

 private void Start()
 {
     int charLength = characters.Length;

     center = GameObject.Find("CenterCompare").GetComponent<RectTransform>();

     distanceBetweenCharacters = 200;
 }

 private void Update()
 {

         for (int i = 0; i < characters.Length; i++)
         {
             distance[i] = Mathf.Abs(characters[i].transform.position.y - center.transform.position.y);
         }

         float minDistance = Mathf.Min(distance);

         Debug.Log(minDistance);

         for (int a = 0; a < characters.Length; a++)
         {
             if (minDistance == distance[a])
             {
                 minCharNum = a;
             }
         }

     Debug.Log(minCharNum);

     if (!isDragging)
     {
         LerpToChar(minCharNum * distanceBetweenCharacters);
     }
 }

 void LerpToChar(int position)
 {
     float newY = Mathf.Lerp(panal.anchoredPosition.y, position, Time.deltaTime * 5f);
     Vector2 newPosition = new Vector2(-386, newY);

     panal.anchoredPosition = newPosition;
 }


 public void StartDrag()
 {
     isDragging = true;
 }

 public void EndDrag()
 {
     isDragging = false;
 }

I assume that the problem is with the array because when i set the minCharNum to a specific integer, it works just fine. What am i doing wrong exactly? Any help is very much appreciated.

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
2
Best Answer

Answer by unit_nick · Sep 06, 2017 at 06:33 PM

 private void Update()
 {
     // needs to be max distance so can find values that are less
     float minDistance = float.MaxValue;
     int closestCharacter = 0;
 
     for (int i = 0; i < characters.Length; i++)
     {
         // get this distance
         float thisDistance = Mathf.Abs(characters[i].transform.position.y - center.transform.position.y);
 
         // save distance
         distance[i] = thisDistance;
 
         // compare and update minimum distance & closest character if required
         if (thisDistance < minDistance)
         {
             minDistance = thisDistance;
             closestCharacter = i;
         }
     }
 
     if (!isDragging)
     {
         LerpToChar(closestCharacter * distanceBetweenCharacters);
     }
 }
Comment
Add comment · Show 6 · 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
avatar image tmalhassan · Sep 06, 2017 at 07:09 PM 0
Share

Hi, thanks for the reply.

i tried to run the code but got the error at line 13:

cannot apply indexing with [] to an expression of type float

avatar image unit_nick tmalhassan · Sep 06, 2017 at 07:15 PM 0
Share

I had a variable with the same name as your array. I have edited the code.

avatar image tmalhassan · Sep 06, 2017 at 07:25 PM 0
Share

i got another error on line 13 when i started the game:

NullReferenceException: Object reference not set to an instance of an object

avatar image unit_nick tmalhassan · Sep 06, 2017 at 07:31 PM 0
Share

ok. I hadn't really looked at the rest of the code. You need to initialize the arrays. I took

the problem is that no matter what i do, it always gets the maximum number

to mean that what you had would run

avatar image tmalhassan · Sep 06, 2017 at 10:35 PM 0
Share

Turns out that the problem was also in the characters' population. Your code runs perfectly. Thanks for the help. Cheers.

avatar image unit_nick tmalhassan · Sep 07, 2017 at 12:38 AM 0
Share

Do you actually use the distance array anywhere else in the code? If not you can the delete lines

 private float[] distance;

&

 // save distance
 distance[i] = thisDistance;

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

381 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to make a snapping scroll menu C# 0 Answers

How can i make Scrolling Menu? 2 Answers

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

Unity 2D Title Screen W/ Keyboard Input ONLY! 0 Answers


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