unity 动态生成一个球形碰撞体
时间: 2023-09-26 19:11:14 浏览: 80
动态球体生成
可以通过以下代码在 Unity 中动态生成一个带有球形碰撞体的游戏对象:
```csharp
using UnityEngine;
public class SphereColliderGenerator : MonoBehaviour
{
public float radius = 1.0f;
private void Start()
{
// 创建一个空的游戏对象,命名为 "SphereCollider"
GameObject sphere = new GameObject("SphereCollider");
// 添加一个 MeshRenderer 组件,使其能够在场景中显示
MeshRenderer renderer = sphere.AddComponent<MeshRenderer>();
renderer.sharedMaterial = new Material(Shader.Find("Standard"));
// 添加一个 MeshFilter 组件,指定球形的顶点和三角形索引
MeshFilter filter = sphere.AddComponent<MeshFilter>();
Mesh mesh = new Mesh();
filter.mesh = mesh;
mesh.vertices = new Vector3[]
{
new Vector3(0.0f, 0.0f, 0.0f),
new Vector3(0.0f, radius, 0.0f),
new Vector3(radius, 0.0f, 0.0f),
new Vector3(0.0f, 0.0f, -radius),
new Vector3(-radius, 0.0f, 0.0f),
new Vector3(0.0f, -radius, 0.0f)
};
mesh.triangles = new int[]
{
0, 1, 2,
0, 3, 1,
0, 4, 3,
0, 2, 4,
5, 1, 3,
5, 3, 4,
5, 4, 2,
5, 2, 1
};
// 添加一个 SphereCollider 组件,指定球形的半径
SphereCollider collider = sphere.AddComponent<SphereCollider>();
collider.radius = radius;
// 将球形游戏对象作为当前游戏对象的子对象
sphere.transform.parent = transform;
}
}
```
将以上代码添加到一个空的游戏对象上,并将其作为场景中的一个对象,在 Inspector 窗口中调整 `radius` 参数即可生成不同半径的球形碰撞体。
阅读全文