捕鱼游戏思路(二)

算法的问题没解决之前先解决了贝塞尔曲线的算法问题,由于使用的是三阶贝塞尔,必须要传入四个点。起点,终点以及两个控制点。结果认为传入四个点比较BT,被放弃了。我心中zzzzzzzzzz!!!
于是考虑一个新的东东?,利用两个点,生成一个圆,按圆弧来游动.感觉有点不靠谱,还是试试吧。
比如:p0和p1两个点

  • 获取圆心坐标(a,b)
    float a = (p0.x+p1.x) / 2;
    float b = (p0.y+p1.y) / 2;
  • 获取半径
    float r = ((p0 - p1).magnitude)/2;
    Unity API:Vector3.magnitude Returen the length of vector(Read Only).返回一个向量的长度
  • 获取圆上的点,o为某一时刻的角度
    float x = a + Mathf.Cos(o * Mathf.PI / 360) * r;
    float y = b + Mathf.Sin(o * Mathf.PI / 360) * r;
    (x,y)表示o角度时的位置,也就是某一时刻鱼的位置
    然后考虑用协成来调用上面的方法,但是Vector3.MoveTowards()方法就不能用了,我的内心是崩溃的(暂时还不知道啥原因)我只好将当前position的值在协成等待下直接赋予新的(x,y),动画是实现了,但是鱼的脑袋没有沿着切线方向。唉,我的心情是崩溃的。。。

还有如下问题(待解决):
1.在协成下调用生成该点的方法,但是不能使用Vector3.MoveTowards()来移动,我得想想写个方法来实现。
2.prefab的头并没有能够像贝塞尔一样,沿着切线方向?试了一下scene里面的物体,好像转变物体是改变了Z轴方向,Unity的2D 我实在是无爱,Z轴不都是垂直整个屏幕了,为啥是调整Z轴来改变物体的角度呢?

解决问题中:
1.之前是通过协成等待,直接通过position = (x,y,0)的方式,运动起来并不连贯
但是尝试插值运动,成功了,所以通过插值运算可以进行运动了。(但是还是有问题:通过插值运算并没有移动到终点,这又是为啥呢?╮(╯_╰)╭)

你可能感兴趣的:(捕鱼游戏思路(二))