unity3D學習筆記2

接着看視頻 = =

學習內容:用代碼創建一個圓環 由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);
}

大家可以試一下效果...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章