1. 程式人生 > >unity 關於2D遊戲物體的轉動與朝向與移動(攝像機)

unity 關於2D遊戲物體的轉動與朝向與移動(攝像機)

如果你想做的是UI或者是2d遊戲物體的的朝向  

可以使用這個

this.transform.eulerAngles = new Vector3 (0, 0, (角度));

 如果你有兩個遊戲物體之間的座標   則可以使用遊戲座標之間的差值。從而計算出兩個座標之間的向量。然後轉化成為角度,在使用上面的方法就可以實現需求了

下面是通過兩個點的座標 計算出角度

		
//計算出當前滑鼠和Dian原點之間的向量  其中data.position為一個遊戲物體的座標  Dian_position另一個遊戲物體的座標
		Vector3	MoveNormalized = new Vector3(data.position - Dian_position);
        //兩點之間的向量
        Vector3	 V3 =  MoveNormalized .normalized;
        //角度
        float z;
		if ((V3).x > 0) {
            //以Z軸為座標 使用向量計算出來角度  
			z = -Vector3.Angle (Vector3.up, V3));
		} else {
			z = Vector3.Angle (Vector3.up, V3);
		}
        //在使用上這句話  遊戲物體就會轉動了
        this.transform.eulerAngles = new Vector3 (0, 0, (z));

通過上面 的方法---如果你已經實現了在UI或者2D平面上的轉化 ,只是遊戲物體轉動的角度不對,這個時候我們只需要在Z這個變數上進行微調就可以了

如果你是3D遊戲物體的朝向 你可以使用系統的API  下面是系統的註釋

this.transform.LookAt (new Vector3(需要朝向的遊戲物體的Vector3的座標,也是就是這個遊戲物體的座標position));

如果你需要的是2D遊戲物體的移動 可以使用面的API  其實是與3D通用的  入參也就是遊戲物體需要移動到的座標

但是筆者還是建議大家使用 Tween外掛~

this.transform.DOMove (playerToPostion, 0.1f,false).SetEase (Ease.Flash);

可能你還需要用到盡頭跟隨遊戲物體 隨著遊戲物體而跑  那麼你依然可以使用到  上面那面這句程式碼

//找到你的相機  我使用tag 尋找的攝像機 或者你也可以使用GameObject.Fin("相機的名字")
MainCamera_ = GameObject.FindWithTag ("MainCamera").gameObject;
MainCamera_.transform.DOMove (需要相機跟隨的遊戲物體V3座標, 0.1f,false).SetEase (Ease.Flash);

希望可以幫助到你~