接着看視頻 = =
學習內容:用代碼創建一個圓環 由36個方體組成 2.方體環繞飛行 3. 原件(長方體)自轉
代碼如下:
private GameObject louti;
private float r = 5;
private float angle = 0; //角度
// Use this for initialization
void Start ()
{
louti = (GameObject)GameObject.Find("louti");
GameObject cube = (GameObject)GameObject.Find("Cube");
for(int i = 0; i<36;i++)
{
float hudu = angle*Mathf.PI/180; //求弧度
float dx = r*Mathf.Cos(hudu);
float dy = r*Mathf.Sin(hudu);
Transform center = louti.transform;
GameObject cube1 = (GameObject)GameObject.Instantiate(cube);
cube1.transform.position = new Vector3(center.position.x+dx, center.position.y+dy, center.position.z);
cube1.transform.LookAt(center); //改變朝向 旋轉方體
angle += 10;
}
}
效果是這樣子的 在想當初老師用這樣的教學多好啊 ~~~~~~
2.方體圍繞一個點旋轉
代碼如下:
private GameObject centerObj;
private float r = 9;
private float angle = 0;
// Use this for initialization
void Start ()
{
centerObj = GameObject.Find("louti");
float hudu = angle* Mathf.PI/180;
float x1 = centerObj.transform.position.x + r* Mathf.Cos(hudu);
float y1 = centerObj.transform.position.y + r* Mathf.Sin(hudu);
this.transform.position = new Vector3(x1,y1,centerObj.transform.position.z);
}
// Update is called once per frame
void Update () {
angle++;
centerObj = GameObject.Find("louti");
float hudu = angle* Mathf.PI/180;
float x1 = centerObj.transform.position.x + r* Mathf.Cos(hudu);
float y1 = centerObj.transform.position.y + r* Mathf.Sin(hudu);
this.transform.position = new Vector3(x1,y1,centerObj.transform.position.z);
this.transform.LookAt(centerObj.transform.position);
}
效果不截圖了。
3. 原件(長方體)自轉
代碼如下:
private float xAngle = 0;
private float yAngle = 0;
void Update ()
{
//方法- 轉兩個 x,y不是能控制的 x不是圍繞自己的軸旋轉的 系統自帶的
// this.transform.Rotate(0,1,0);
//圍繞y軸旋轉 y的值變大 速度變快
//方法二 旋轉 x,y兩個軸 都是圍繞各自的旋轉 兩種方法 旋轉的時候 單軸是一樣的效果
//但是兩個軸多軸了 就不一樣的效果了
xAngle ++;
yAngle ++;
this.transform.localEulerAngles = new Vector3(xAngle,yAngle,0);
}
大家可以試一下效果...