2016-05-26 43 views
0

我正在製作一個側面卷軸遊戲,其中主精靈在屏幕上移動,並且必須通過跳躍來躲避障礙物。我製作了固定的障礙物,但我需要幫助製作移動障礙物來回移動。我將如何做到這一點? 現在我有這個if else語句,它將一個對象向上移動,當它碰到某個點時,它的座標重新啓動到原來的位置。使對象向上和向下移動(Javascript)

if (movesquare1 > 20) { 
movesquare1 -= 2; 
movesquare2 -= 2; 
} 
else { 
movesquare1 = 145; 
movesquare2 = 195; 
} 

movesquare1是一個使障礙物(一個正方形)的函數內的變量。 movesquare2是一個變量,因此當主精靈接觸到移動障礙物時,碰撞系統會記錄變化的位置。

(positionX > (439 - backgroundPositionX) && positionX < (492 - backgroundPositionX) && positionY > movesquare1 && positionY < movesquare2) 

The full game and code

+0

歡迎來到SO。請閱讀[問]。你會發現很難獲得幫助,因爲你的問題(特別是代碼位)太大了。你能產生一個最小(即小得多)的代碼,告訴我們你想要什麼,你的問題是什麼? –

回答

1

1)這不是一個JavaScript相關的問題,因爲你可以在可用於創建遊戲的每一種語言這個問題。

2)我的答案 - 作爲介紹:http://www.gamedev.net/page/resources/_/technical/math-and-physics/practical-use-of-vector-math-in-games-r2968。通過從原始像素/座標計算中移動到矢量數學抽象,您可以獲得用於處理2D/3D移動對象的非常靈活,成熟且方便的工具

3)閱讀關於gamedev的一些書籍('ai for game developers' ,例如)

+0

謝謝!我剛開始編程,所以我會看看我是否可以理解和實現教程中的內容。 – Mit

1

您可能需要在遊戲循環中引入一個時間變量,並根據當前幀和前一幀之間的時間差更新可移動對象的位置。

然後,您可以確定可移動平方的位置作爲時間的函數。

進行快速實驗,試試這個:

var t = new Date().getTime(); 
movesquare1 = Math.sin(t/200) * 50 + 100; 

我建議你通過許多不錯的HTML5遊戲教程解釋的概念,如抽象(使你的遊戲對象繼承通用功能)的一個閱讀,碰撞檢測(以固定的幀速率運行碰撞檢測,無論渲染器的幀率如何,以避免在兩幀之間移動通過運動對象的路徑)等。

+0

謝謝,會做! – Mit

2

您可以使用math.sin函數。把它放在0..1之間,然後縮放。

+0

謝謝!我會試試看。 – Mit