角色的移动不难,难就难在你怎么去理解。网上有太多不负责任打着3d向量运算的旗号却只是谈论着理论上的知识,完全没有解释在unity中是如何运用的,所以,本篇着重讲解一下3d数学基础中的向量运算,由题入题式地揭开她的面纱,蹂躏她,践踏她,毫不费劲的搞定她。 我们得知其然也得知其所以然
既然说到由题入题,那么题目在哪里呢?别慌,听我娓娓道来
倘若,你想在unity里边实现一个角色(别名:player) 从角色当前点(A点)移动到某一个目的点(B点),你会怎么做?这里还得注意有个前提条件,A点和B点都是在同一平面上,之所以加上个这样的限定条件,是为了方便我们的讨论,二维坐标中的向量加减同样是适用于三维坐标.
好了,要实现上边的需求,你会怎么办?有的读者可能会说了,这好办呀,用一个插值运算不就好了,然后快速在update函数中写到:player.transform.position = Vector3.Lerp(player.tranform.position,des.transform.postion,t) 。很好,也很不错,但我很想说的是:虽然你知道参数一的含义,也知道参数二代表着什么,还勉强知道参数三t的是什么,同样还能知道返回值的意思,但你能用一个数学表达式去代表这个API?也就是lerp底层的算法是什么,其实很简洁,但并不简单。大神求飘过,不然都不能好好的装逼了。
讲到这里,那么我们的主旨也拉开了帷幕,先上一张图