原創文章如需轉載請注明:轉載自 脫莫柔Unity3D學習之旅 QQ群:【Unity3D(AR/VR) 334163814】【Unity3D(游戲) 119706192】 本文鏈接地址:Unity3D 一些基礎的3D圖形學算法
1..A點正前方,10米位置的坐標點
代碼:
- public Transform A;
- public Transform Z;
- void Start ()
- {
- 正前方();
- Debug.Log("Distance:" + Vector3.Distance(A.transform.position, Z.transform.position));
- }
- void 正前方()
- {
- Z.transform.position = A.transform.position + Vector3.forward * 10f;
- }
2.A點前方Y軸45°,10米位置的坐標點
直接上代碼:
- void 斜前方()
- {
- Quaternion q = Quaternion.Euler(0, 45, 0);
- Z.transform.position = A.transform.position + q * Vector3.forward * 10f;
- }
運行結果:
3.A點到B點方向,10米位置的坐標點
柱子是B點。
這個例子用3D視角來做。
代碼:
- void 到B方向正前方()
- {
- Vector3 方向 = (B.transform.position - A.transform.position).normalized;
- Quaternion q = Quaternion.LookRotation(方向);
- Z.transform.position = A.transform.position + q * Vector3.forward * 10f;
- Debug.Log("Distance A-B:" + Vector3.Distance(A.transform.position, B.transform.position));
- }
4.A點到B點方向Y軸偏移45°,10米位置的坐標點
這個例子將B點與A點放在了同一高度,繼續使用2D視角。
代碼:
- void 到B方向斜前方()
- {
- Vector3 方向 = (B.transform.position - A.transform.position).normalized;
- Quaternion q = Quaternion.LookRotation(方向) * Quaternion.Euler(0,45,0);
- Z.transform.position = A.transform.position + q * Vector3.forward * 10f;
- Debug.Log("Distance A-B:" + Vector3.Distance(A.transform.position, B.transform.position));
- }
