使用的旋转矩阵的原理,如图:
然后下面是代码:
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour
{
public Vector3 a, b, c;
void Start()
{
//DrawTriangle(Rotate(1, a), Rotate(1, b), Rotate(1, c));
}
void Update()
{
DrawTriangle(Rotate(10, ref a), Rotate(10, ref b), Rotate(10, ref c));
}
private void DrawTriangle(Vector3 a,Vector3 b,Vector3 c)
{
MeshFilter meshFilter = GetComponent<MeshFilter>();
Mesh mesh = meshFilter.mesh;
Vector3[] vertices = new Vector3[3];
vertices[0] = a;
vertices[1] = b;
vertices[2] = c;
int[] triangles = new int[3];
triangles[0] = 0;
triangles[1] = 1;
triangles[2] = 2;
mesh.vertices = vertices;
mesh.triangles = triangles;
}
public Vector3 Rotate(int degrees, ref Vector3 pos)
{
float angle = (float)(degrees / 360.0f * Mathf.PI);
float x = (float)(pos.x * Mathf.Cos(angle) - pos.y * Mathf.Sin(angle));
float y = (float)(pos.x * Mathf.Sin(angle) + pos.y * Mathf.Cos(angle));
pos.x = x;
pos.y = y;
return pos;
}
}
下面是Inspector的截图:
运行效果:、