问题
虽然DoTween提供了可视化路径点的添加,但往往有时候需要做圆形、椭圆、曲线等难以手动添加路径的情况。这个时候就需要通过代码生成想要的路径。
解决思路
本文以做水平圆形的运动为例子,其他形状的路径思路是一样的,只要能通过数学算出形状的点。
1.计算路径点
根据中心物体(centerObject)和运动物体(moveObject)的位置可求出圆形路线上的路径点。以centerObject为圆心,moveObject为圆上的点,从该点依次计算出每次旋转 x 弧度后的点,这些点即作为路径点。首先计算moveObject初始位置在圆上相对centerObject的X-axis方向呈多少夹角,根据以下公式进行循环计算所有路径点(路径点个数自行设置)并存到circlePoints数组中:
- 圆心(c1,c2),旋转角度 θ,半径 r ,旋转后得到的点(x1,y1)
x1 = c1 - r * sin(θ)
y1 = c1 + r * cos(θ)
其中 θ = 360除以路径点个数得到,r = centerObjectd到moveObject的X-Z平面上的直线距离
P.S. 为了路径头尾相连,要注意数组保存的第一个路径点和最后一个路径点是否重复,这两者必须有一个是存moveObject的初始位置的。
2.环绕旋转运动
在获得圆形路线上的路径点后,利用这些路径点通过DoTween的路径动画进行环形运动
tweenOfRotation = tweenOBJ
.DOPath (circlePoints, 10.0f, PathType.CatmullRom) //设置路径为曲线
.SetEase (Ease.Linear) //设置运动状态为匀速运动
.SetLookAt(centerPoint) //设置标题字体一直看向大树
.SetLoops(-1) //设置一直循环运动
.SetOptions(true); //设置运动路径为闭环,即头尾相连