Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

  • Moderators
Δημοσ.

Ναι, ήταν η 1η ιδέα, μετά θα υλοποιήσω αυτό που είπε το παιδί.

 

Όχι ρε συ, δεν είπα αυτό. Αυτό που είπα να ελέγχεις πριν βάλεις κάποιο σημείο μήπως υπάρχει κάποιο άλλο κοντά του και όχι να σβήνεις εκ των υστέρων. Δηλαδή, αν έχεις μια περιοχή 50x50x50, τότε πριν βάλεις κάποιο σημείο να ελέγχεις ότι δεν υπάρχει άλλο σημείο σε απόσταση 4x4x4. Έτσι, θεωρητικά, αν βάλεις 10 σημεία θα είναι κατανεμημένα ομοιόμορφα.

Δημοσ.

Images

 

Στην 2η εικόνα έβαλα να εκτυπώνει την απόσταση μεταξύ σημείων, φυσικά που να χωρέσει όλο αυτό στην οθόνη... μπορώ να πω ότι είναι ομοιόμορφα κατανεμημένα.

 

Αγνοήστε το 0.

 

 

 

screenshot_22.png

 

 

screenshot_23.png

 

 

 

 

 

 

using UnityEngine;
using System.Collections.Generic;
using System.Collections;

public class CTest: MonoBehaviour
{
    List<Vector3> points = new List<Vector3>();

    // 5x5 Grid -> Total 25 Points
    const int MAX_POINTS = 5;

    // Print Points and theyr Distance;
    bool printPoints = false;

    void Start()
    {
        // Dhmiourgei points se mia perioxi 700mx700m (m?)
        points = GenerateRandomPoints(0, 700);
    }


    /// <summary>
    /// Build a list with random points
    /// </summary>
    /// <param name="min">Start Point on 3D World</param>
    /// <param name="max">End Point on 3D World</param>
    /// <returns>List with random-builded points</returns>
    public List<Vector3> GenerateRandomPoints(float min, float max)
    {
        List<Vector3> list = new List<Vector3>();

        int x, z;
        int width = (int)Mathf.Abs(max - min) / MAX_POINTS;

        for (int i = 0; i < MAX_POINTS; i++)
        {
            for (int j = 0; j < MAX_POINTS; j++)
            {
                x = Random.Range(j * width, (j + 1) * width);
                z = Random.Range(i * width, (i + 1) * width);

                list.Add(new Vector3(x, 500, z));
            }
        }

        return list;
    }

    void OnGUI()
    {
        for (int i = 0; i < points.Count; i++)
        {
            GUI.Label(new Rect(points[i].x, points[i].z, 50, 50), "*");
        }

        if (GUI.Button(new Rect(Screen.width - 200, 50, 150, 40), "Print Points")) {
            printPoints = !printPoints;
        }

        List<string> strPoints = new List<string>();
        if (printPoints)
        {
            for (int i = 0; i < points.Count - 1; i++)
            {
                for (int j = 1; j < points.Count; j++)
                {
                    strPoints.Add(points[i].ToString() + " -> " + points[j].ToString() + "\t -> "
                                                        + Vector3.Distance(points[i], points[j]));
                }
            }//for


            for (int i = 0; i < strPoints.Count; i++)
            {
                GUI.Label(new Rect(50, i * 20, 500, 50), strPoints[i]);
            }
        }//if-printPoints
    }

}

 

 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...