遇到一个想做的功能,但是实现不了,核心原因是因为对U3D的3D数学概念没有灵活吃透。故再次系统学习之—第三次学习3D数学.
本次,希望实现的功能很简单:
如在小地图中,希望可以动态画出Player当前的位置、z的朝向:用3条线、z轴正向、30°旋转、-30°旋转。
问题是:0点可以获得,P1点? P2点是未知的。
我尝试了2个小时,结果不竟如人意,少于沮丧。
不得不,再次花点时间系统的学习3D数学:
1 位移–向量和点:
- 点: 点和向量在数学上是一致的,实际生活中点的概念比较好理解,坐标点来定位–南二环、北二环。 【点用(3,4,5)圆括号来标示,简称P】
- 向量:“俗称增量”,有大小和方向,如”往前1步走。 左转90度”. 往前走,直到碰到墙,你才会停下来—在这之前,你无法准确获得碰到墙的点的坐标或者你和墙的距离。 【向量用<3,4,5>尖括号来标示,简称V】
- 在U3D中,统一用Vector3对象来表达向量和点,这个也是导致新手晕头转向的一个很重要的原因; 一个技巧,凡是在API中用position、Point的,V3肯定代表是点;凡是Vector、direction的是向量;多看官方的API手册,写得很明白。
做个游戏,列表出你用过的Vector3的API,分析分析用到的Vector3是向量(V)还是点(P)
需求 |
API |
向量(V) 点(P) |
备注 |
平滑位移 |