Generieren prozedurale schwimmende Insel in Einheit
Posted: 15 May 2025, 19:05
Ich möchte in Einheit eine einfache schwimmende Insel mit niedriger Verfahren erzeugen:
. Ich habe nicht die Ergebnisse erhalten, die ich wollte, wie eine richtige Kurve und kein Verjüngen. Stimmt etwas mit meinem Code nicht? Oder gibt es einen anderen Algorithmus, den ich verwenden kann? < /p>
Der Code, den ich bisher verwendet habe: < /p>
. Ich habe nicht die Ergebnisse erhalten, die ich wollte, wie eine richtige Kurve und kein Verjüngen. Stimmt etwas mit meinem Code nicht? Oder gibt es einen anderen Algorithmus, den ich verwenden kann? < /p>
Der Code, den ich bisher verwendet habe: < /p>
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SphereGenerator : MonoBehaviour
{
public float minRadius = 1f;
Vector3[] vertices;
Vector3[] normales;
Vector2[] uvs;
int[] triangles;
MeshFilter filter;
// Start is called before the first frame update
void Start()
{
StartCoroutine(createMesh());
}
// Update is called once per frame
void Update()
{
updateMesh();
}
IEnumerator createMesh(){
float radius = minRadius;
// Longitude |||
int nbLong = 24;
// Latitude ---
int nbLat = 16;
#region Vertices
vertices = new Vector3[(nbLong+1) * nbLat + 2];
float _pi = Mathf.PI;
float _2pi = _pi * 2f;
vertices[0] = Vector3.zero;
float y = 0f;
for( int lat = 0; lat < nbLat; lat++ )
{
float a1 = _pi * (float)(lat+1) / (nbLat+1);
float sin1 = Mathf.Sin(a1);
float cos1 = Mathf.Cos(a1);
for( int lon = 0; lon