创建一个空对象,创建出来3D圆形,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Circle : MonoBehaviour
{
public Mesh sphere;
public GameObject Spheres;
// Start is called before the first frame update
void Start()
{
Spheres.SetActive(true);
Mesh mesh=new Mesh();
List<Vector3> vertices = new List<Vector3>();
List<Vector3> normals = new List<Vector3>();
List<Vector2> uv = new List<Vector2>();
for (int i = 0; i < sphere.vertices.Length; i++)
{
vertices.Add(sphere.vertices[i]);
normals.Add(sphere.normals[i]);
uv.Add(sphere.uv[i]);
}
mesh.vertices = vertices.ToArray();
mesh.normals = normals.ToArray();
mesh.uv = uv.ToArray();
List<int> trianles = new List<int>();
for (int i = 0; i < sphere.triangles.Length; i+=3)
{
trianles.Add(sphere.triangles[i]);
trianles.Add(sphere.triangles[i + 2]);
trianles.Add(sphere.triangles[i + 1]);
}
mesh.triangles = trianles.ToArray();
GetComponent<MeshFilter>().mesh = mesh;
GetComponent<MeshCollider>().sharedMesh = mesh;
}
// Update is called once per frame
void Update()
{
}
}
随后在创建一个空对象,这个空对象是用来生成圆形3D模型的,也就是摇奖号码的球,随后给这个球挂刚体,把刚体里的数据(碰撞检测Continuous)改成(连续Continuous)
,之后在(Create)创建一个(Physic Material),
把这个组件里面的前三个数值分别为:动态摩擦,静态摩擦和弹力
,把动态摩擦和静态摩擦的数值改成0,弹力的数值改到最大也就是1,把这个组件挂到摇奖号码的球的刚体上,和创建出来3D圆形上,摇奖号码的球就可以来回弹动了,然后不把球的刚体的(碰撞检测Continuous)改成(连续Continuous),就会导致摇奖号码的球弹出,也就是游戏中经常碰见的穿模问题