【发布时间】:2020-05-18 20:13:30
【问题描述】:
我正在尝试让一个球体落在我通过程序生成的网格上。不幸的是,球体从网格中掉了下来。此代码按程序生成网格。除了这段代码之外,我还有一个统一的球体,它附有刚体和球体对撞机。不幸的是,球体穿过网格,我不明白为什么。请帮忙。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PGC_Mesh : MonoBehaviour
{
Mesh mesh;
Vector3[] vertices;
int[] triangles;
public int xSize = 20;
public int zSize = 20;
public Material grassMat;
void Start()
{
mesh = new Mesh();
GetComponent<MeshFilter>().mesh = mesh;
GetComponent<Renderer>().material = grassMat;
MeshCollider collider = gameObject.AddComponent<MeshCollider>();
CreateShape();
UpdateMesh();
}
void CreateShape()
{
vertices = new Vector3[(xSize + 1) * (zSize + 1)];
int i = 0;
for (int z = 0; z <= zSize; z++)
{
for (int x = 0; x <= xSize; x++)
{
float height = Mathf.PerlinNoise(x * .5f, z * .5f) * 10f;
vertices[i] = new Vector3(x, height, z);
i++;
}
}
int myVertices = 0;
int myTriangles = 0;
triangles = new int[xSize * zSize * 6];
for(int z = 0; z < zSize; z++)
{
for (int x = 0; x < xSize; x++)
{
triangles[myTriangles + 0] = myVertices + (0);
triangles[myTriangles + 1] = myVertices + (xSize + 1);
triangles[myTriangles + 2] = myVertices + (1);
triangles[myTriangles + 3] = myVertices + (1);
triangles[myTriangles + 4] = myVertices + (xSize + 1);
triangles[myTriangles + 5] = myVertices + (xSize + 2);
myVertices++;
myTriangles += 6;
}
myVertices++;
}
}
void UpdateMesh()
{
mesh.Clear();
mesh.vertices = vertices;
mesh.triangles = triangles;
mesh.RecalculateNormals();
}
private void OnDrawGizmos()
{
if (vertices == null)
return;
for (int i = 0; i < vertices.Length; i++)
{
Gizmos.DrawSphere(vertices[i], .1f);
}
}
}
【问题讨论】: