2014-02-11 24 views
1

這是一個看似簡單的遊戲機制,我一直試圖弄清楚如何去做。我將如何創建水平居中的「重力」? - libGDX -

要嘗試和解釋,我將描述一個想法(問題):

  • 基本上我們說有是在 屏幕中心的垂直線。

  • 我們有一個精靈對象,將它的水平速度改爲 閃避導彈,但是在這樣做時,對象只會漂移 。

  • 我如何添加一個強大的重力的水平「中線」我的屏幕 讓自己的精靈會在每次 向外提升其速度時間「落」回呢?

我可以發佈我的源代碼,但它不會對解決這個特定情況下的問題太有幫助。

我搜索了幾天,試圖找出這個,所以任何幫助,特別是與代碼示例將是非常有益的!

enter image description here

+0

也許一些描述性的圖像將有助於理解你的問題。也可以考慮在http://gamedev.stackexchange.com/中發佈這個問題。 –

+0

請查看我的編輯,我也發佈了這個gamedev – Derek

回答

4

我編程,在過去這種類型的東西。重力(在物理學)是加速度,所以

1)如果子畫面是從每1/n秒其水平速度減去線的右側,並

2)如果子畫面是每隔1/n秒添加一次水平速度。

嘗試添加/減去一個常數,或者添加/減去一個數字,使精靈離中心線越遠。

無論哪種方式,你會這樣做,這將創建一個鐘擺效果。如果你不想要,你還必須添加一個抑制因子。一種簡單的方法是,如果精靈離開中心線,那麼您添加/減少的值比精靈朝中心線回去時的值要大。因此,使精靈停止的「重力」大於使精靈重新回到中心線的重力加速度。

+0

感謝您的建議!然而,我有一個問題,我將如何創建中心線變量?(我是遊戲開發新手) – Derek

+1

感謝upvote和標記我的問題是正確的!對於中線變量,我假設你會知道所有精靈的X和Y位置。那麼我們假設屏幕寬度爲800像素。 X位置爲400的任何精靈都位於中心線上。如果精靈的X小於400,則開始將您的因子添加到其X速度。如果精靈的X大於400,則從X速度開始減去你的因子。我認爲應該這樣做! – BrettFromLA

+0

@BrettFromLA我upvoted你的答案。只是一個小建議:你說,如果屏幕寬800像素,則x座標爲400的精靈位於中心線上。我不會讓你使用像素。而是使用相機獨立解析。下一件事:精靈x座標在它的左邊,所以如果精靈正好在屏幕中間,他的'x座標'將小於重心,他會向右移動。所以你需要說:'if(sprite.x + sprite.width/2 Springrbua

0

由於您使用的是libgdx,您還應該使用相機。所以你不必像素地計算東西。例如你說我的屏幕是16個世界單位的寬度和9個世界單位的高度(16/9的寬高比)。所以你可以說重心位於16的中心,所以如果我沒有錯,那麼8.5。現在你可以說:if (player.center.x < 8.5f) { player.xSpeed += GRAVITY_HORIZONTAL }if (player.center.x > 8.5) { player.xSpeed -= GRAVITY_HORIZONTAL }。在這種情況下,重力是一個常數值。但正如@BrettFromLA所說,如果與中心的距離增長,您還可以讓價值增長。