背景
我正在創建一個游戲,您可以在其中控制社區中的多個人,因此很明顯,人們需要能夠自己移動,完成自己的任務。我使用了
問題
如何讓它們都以相同的速度移動?如果您對如何將網格從一個點移動到另一個點有更好的解決方案,請告訴我如何。
PS:在我鏈接的帖子中,我使用了答案的“花式運動”部分。
uj5u.com熱心網友回復:
(如果小提琴消失,之前的答案使用緩慢遞增的變數 withpath.getPointAt(position)來沿路徑移動物件。)
該Curve.getPointAt方法采用沿曲線的百分比值。由于這種計算,點之間的距離(例如0和0.1)將根據曲線的長度而有所不同。
所以如果curve1很10 units長,而且curve2很100 units長,那么:
curve1.getPointAt(0.1) // vector 1 unit from the start of curve1
curve2.getPointAt(0.1) // vector 10 units from the start of curve2
如果您以此為基礎進行運動,那么基本上沿移動的物件的移動速度curve2將與沿移動10x的物件一樣快curve1。
相反,您想要做的是確定物件應該沿著路徑走多少步,給定特定的“步數/秒”或“步數/幀”。這更符合真實物理速度的概念,而不是由所走路徑的長度定義的概念。
假設您想在2 units per frame和curve1上旅行curve2。現在您以固定速率行駛,您只需將速率除以總長度即可獲得到達路徑末端所需的“步數”(或在本例中為幀數)。
2 / 10 = 0.2 // this is the point polling percentage for curve 1
2 / 100 = 0.02 // this is the point polling percentage for curve 2
現在,當您移動一個物件時curve1,您將需要使用path.getPointAt(0.2),并且為curve2您將使用path.getPointAt(0.02)。
稍微向前看,您可能會問,當數學在完美示例之外沒有對齊時會發生什么,并且您有額外的“部分步驟”來使其到達曲線的末端。好吧,這取決于您決定如何處理它。您可以花費額外的幀來完成運動,或者您可以在運動計算期間提前一步并決定將其發送到最后。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/424808.html
標籤:javascript 数学 三.js
上一篇:從R中的圖形重建馬爾可夫鏈
