原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:【Unity3D(AR/VR) 334163814】【Unity3D(游戏) 119706192】 本文链接地址:Unity3D 一些基础的3D图形学算法
1..A点正前方,10米位置的坐标点
![](https://i-blog.csdnimg.cn/blog_migrate/d9e436e9d063f8a92db8c0e99a8efc34.png)
代码:
- 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;
- }
![](https://i-blog.csdnimg.cn/blog_migrate/ffcc66127c9948112ca0c15c31bc9aaa.png)
2.A点前方Y轴45°,10米位置的坐标点
直接上代码:
- void 斜前方()
- {
- Quaternion q = Quaternion.Euler(0, 45, 0);
- Z.transform.position = A.transform.position + q * Vector3.forward * 10f;
- }
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/d6faad78d33f3e83cb1a6cd5724b7f4e.png)
3.A点到B点方向,10米位置的坐标点
![](https://i-blog.csdnimg.cn/blog_migrate/443c6f52992371476b5fd874b8498688.png)
柱子是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));
- }
![](https://i-blog.csdnimg.cn/blog_migrate/1b2b8afd419b4227ac4019de648d81d4.png)
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));
- }
![](https://i-blog.csdnimg.cn/blog_migrate/fc82f611d4d9169f06e23b7acb2abc2d.png)