貝塞爾曲線製作跳躍軌跡

2021-07-10 12:26:23 字數 1191 閱讀 1497

最近正在進行的乙個專案,需要做乙個山羊跳躍的功能,因為起跳點和落地點的座標都是已知並且不能更改的,於是就排除了使用物理引擎的方法。

一開始考慮的是使用球形插值的方法,**如下:

jumptime += 0.07f;

vector3 center = (start + end) * 0.5f;

center -= new vector3(0, 1, 0);

vector3 startpos = start – center;

vector3 endpos = end – center;

transform.position = vector3.slerp(startpos, endpos, jumptime);

transform.position += center;

if (transform.position == end)

但是vector3.slerp球形插值獲得的曲線過於平滑,弧線頂點取起跳座標及落地座標的中間點,導致跳躍動作過於僵硬不夠逼真,所以最後還是採用了貝塞爾曲線去製作跳躍曲線。

貝塞爾曲線,學過圖形影象的同學應該都知道。它是依據四個位置任意的點座標繪製出的一條光滑曲線,而我們現在需要用到的只有三個點,起點,中點,和頂點。

一階貝塞爾曲線(線段):

二階貝塞爾曲線(拋物線):

三階貝塞爾曲線:

跳躍曲線是一條拋物線,起點,中點。影響拋物線弧度的則是頂點座標。我們要使用貝塞爾曲線則只需要套用公式即可:

private vector3 start;

private vector3 end;

private vector3 center;

private bool isjump = false;

private float t = 0;

void start()

void update()

if (isjump)

public vector3 result(vector3 startpos, vector3 endpos, float t)

return (1 – t) * (1 – t) * startpos + 2 * t * (1 – t) * center + t * t * endpos;

}

這樣就可以根據自己的需求去修改頂點座標,達到策劃的要求了。

貝塞爾曲線

1.概述 貝塞爾曲線 b zier curve 又稱 貝茲曲線或貝濟埃曲線,是應用於二維圖形應用程式的數學曲線。一般的向量圖形 軟體通過它來精確畫出曲線,貝茲曲線由 線段與節點組成,節點是可拖動的支點,線段像可伸縮的皮筋,我們在繪圖工具上看到的鋼筆工具就是來做這種向量曲線的。貝塞爾曲線是計算機圖形學...

貝塞爾曲線

由於工作需要,最近在研究乙個類似qq訊息劃掉的效果 很多強迫症患者童鞋對這個簡直是愛不釋手,當然這個也包括我自己 貝塞爾曲線就是這樣的一條曲線,它是依據四個位置任意的點座標繪製出的一條 光滑曲線 在歷史上,研究貝塞爾曲線的人最初是按照已知曲線 引數方程 來確定四個點的思路設計出這種向量曲線繪製法。貝...

貝塞爾曲線

貝塞爾曲線在android中運用廣泛,可以用來繪製各類複雜曲線,因為貝塞爾曲線只需要指定控制點,就能繪製出特定的曲線。其次是做點和點的平滑過渡。為什麼可以做到如上兩點,看下面的講解 首先來說,貝塞爾曲線有階的概念,這個階可以理解為控制點,一階的控制點只有兩個。如上是一階的方程,其中t取值為0到1,可...