最近在處理飛行效果的需求,類似【完美世界】裡的飛行(五連跳?),起初是自己琢磨其中每一段飛行的軌跡並分解成不同數學模型,實現了直線勻變速、二階貝塞爾曲線、拋物線軌跡效果,其**如下:
一、直線勻變速(我就不整合向上向下了,亦或者歸結為90度的斜拋物運動軌跡)
// startpos 起始位置
// curshowpoint 當前位置
// startdir 起始朝向
// 當前朝向
// dt 該段軌跡開始到當前的時間
private vector3 getshowposbylineup(vector3 startpos, vector3 curshowpoint, float startdir, float curdir, float dt)
if (startspeed == -99999)// 直線向上運動
curspeed = startspeed - accspeed * dt;
float d = startspeed * dt - accspeed * dt * dt / 2;
float rate = d / slen;
float rotangle = (float)((curdir - startdir) * math.pi / 180);
vector3 vec = quaternion.angleaxis(rotangle, new vector3(curshowpoint.x, startpos.y, curshowpoint.z)) * startpos;
rotangle = (float)(curdir * math.pi / 180);
float posx = vec.x + distance * rate * mathf.cos(rotangle);
float posy = startpos.y + height * rate;
float posz = vec.z + distance * rate * mathf.sin(rotangle);
return new vector3(posx, posy, posz);
}二、二階貝塞爾曲線
private vector3 getshowposbybezier(vector3 startpos, vector3 curshowpoint, float startdir, float curdir, float dt)
return calculatecubicbezierpoint(dt, v0, v1, v2);
}public vector3 calculatecubicbezierpoint(float t, vector3 p0, vector3 p1, vector3 p2)
三、拋物線
private vector3 getshowposbyparacurve(vector3 startpos, vector3 curshowpoint, float startdir, float curdir, float dt)
curspeed = startspeed;
float d = startspeed * dt * mathf.cos(paracurveangle);
float h = startspeed * dt * mathf.sin(paracurveangle) - (accspeed * dt * dt) / 2;
float rotangle = (float)(curdir * math.pi / 180);
float posx = startpos.x + d * mathf.cos(rotangle);
float posy = startpos.y + h;
float posz = startpos.z + d * mathf.sin(rotangle);
return new vector3(posx, posy, posz);
}上面三種是強行用用數學模型計算飛行軌跡,效率未知,但對於需求千變萬化不太適應,所以一直查詢其它方式實現。起初想結合itween,後來發現animationcurve更適合,會在後續貼出;
(非常抱歉我的數學爛,該處的旋轉是存在問題的,不是居於當前玩家位置的xz和初試位置的y構成的點進行旋轉的,所以最終飛行過程中轉向效果不對,因為暫時有更緊急的事要處理暫時放這,希望有大神幫忙解決下)
隨筆 關於飛機維修檢測 想到的
學習目的 飛機每日的正常執行保證了幾百條生命的安全,可能是最嚴謹的維修檢修專案,通過學習飛機維修管理,提公升軟體測試維護的能力。學到的 飛機地勤檢修所有都是按照手冊操作進行排查,檢查各類天線探頭有無缺損,減少漏檢,等人為的影響 每架飛機的檢查流程專案最多達百項,機頭,機翼到機尾,從貨艙,到駕駛艙,逐...
Unity 關於如何實現動態天空盒效果
最開始做這個的時候再網上查了很多資料,幾乎推薦的都是unisky,unistorm這些外掛程式。不過不得不說這倆外掛程式的效果是真的不錯,大家有時間可以研究一下。但是這種不免有一些浪費資源。其實unity是很人性化的,早就預知到了我們這些需求 在內建的shader,skybox和cubemap這些s...
關於飛思卡爾xs128的IO埠
埠 a,b和k為通用i o介面 埠 e 整合了irq,xirq中斷輸入 埠 t 整合了1個定時模組 埠 s 整合了2個sci模組和1個spi模組 埠 m 整合了1個mscan 埠 p 整合了 pwm 模組,同時可用作外部中斷源輸入 埠 h 和 j 為通用i o介面,同時可用作外部中斷源輸入 埠 ad...