算法的問題沒解決之前先解決了貝塞爾曲線的算法問題茁肠,由于使用的是三階貝塞爾泽腮,必須要傳入四個(gè)點(diǎn)御蒲。起點(diǎn),終點(diǎn)以及兩個(gè)控制點(diǎn)诊赊。結(jié)果認(rèn)為傳入四個(gè)點(diǎn)比較BT厚满,被放棄了。我心中zzzzzzzzzz1贪酢5夤俊!
于是考慮一個(gè)新的東東鲸郊?丰榴,利用兩個(gè)點(diǎn),生成一個(gè)圓秆撮,按圓弧來游動(dòng).感覺有點(diǎn)不靠譜四濒,還是試試吧。
比如:p0和p1兩個(gè)點(diǎn)
- 獲取圓心坐標(biāo)(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).返回一個(gè)向量的長度 - 獲取圓上的點(diǎn),o為某一時(shí)刻的角度
float x = a + Mathf.Cos(o * Mathf.PI / 360) * r;
float y = b + Mathf.Sin(o * Mathf.PI / 360) * r;
(x,y)表示o角度時(shí)的位置职辨,也就是某一時(shí)刻魚的位置
然后考慮用協(xié)成來調(diào)用上面的方法盗蟆,但是Vector3.MoveTowards()方法就不能用了,我的內(nèi)心是崩潰的(暫時(shí)還不知道啥原因)我只好將當(dāng)前position的值在協(xié)成等待下直接賦予新的(x,y)舒裤,動(dòng)畫是實(shí)現(xiàn)了喳资,但是魚的腦袋沒有沿著切線方向。唉腾供,我的心情是崩潰的仆邓。鲜滩。。
還有如下問題(待解決):
1.在協(xié)成下調(diào)用生成該點(diǎn)的方法宏赘,但是不能使用Vector3.MoveTowards()來移動(dòng)绒北,我得想想寫個(gè)方法來實(shí)現(xiàn)。
2.prefab的頭并沒有能夠像貝塞爾一樣察署,沿著切線方向闷游?試了一下scene里面的物體,好像轉(zhuǎn)變物體是改變了Z軸方向贴汪,Unity的2D 我實(shí)在是無愛脐往,Z軸不都是垂直整個(gè)屏幕了,為啥是調(diào)整Z軸來改變物體的角度呢扳埂?
解決問題中:
1.之前是通過協(xié)成等待业簿,直接通過position = (x,y,0)的方式,運(yùn)動(dòng)起來并不連貫
但是嘗試插值運(yùn)動(dòng)阳懂,成功了梅尤,所以通過插值運(yùn)算可以進(jìn)行運(yùn)動(dòng)了。(但是還是有問題:通過插值運(yùn)算并沒有移動(dòng)到終點(diǎn)岩调,這又是為啥呢巷燥?╮(╯_╰)╭)