2014-03-30 53 views
0

我剛開始嘗試libgdx和理解......我看着樣本項目...我的問題:的Android libGDX移動物體和檢測

i.hizliresim.com/e79AlN.png

的1和6 originial球號碼。和其他球一樣,球的(1和6)會隨機出現在其他地方。 (速度1)。例如如果我是任何球的火炬,其速度可達3 ... GameObjects應該在while循環中。球有時(隨機)圖像,球應該回到自己的360度。並在TectureRegion上獲取圖片。 有沒有類似的例子?或 我該怎麼做?

(對不起,我英文不好)

謝謝...

回答

1

雖然我理解你希望你的球對象,直到你退出遊戲到移動角落找尋多。你也想加快他們的接觸權?你也想紋理它們,也許他們應該檢測與屏幕邊框和其他球碰撞?

  1. Libgdx有一個主循環。這個循環每個renderloop調用render(delta)delta取決於自上次致電render以來經過的時間。所以在快速設備上,這個delta比慢速設備(大部分時間)要小。這一次是以秒爲單位給出的。要移動對象,您可以在每個渲染循環中爲其位置添加一個值。在你的情況下,你想添加1(希望不是像素,因爲它然後會在大屏幕上看起來較慢):

    for(BallObject ball:ballObjects){ball.setPositionX(ball.getPositionX()+ ball.getSpeed ()* delta * direction.x); ball.setPositionY(ball.getPositionY()+ ball.getSpeed()* delta * direction.y); }

在這種情況下一個BallObject具有positionXpositionY描述他的當前位置,和direction.xdirection.y,描述在x和y方向上移動他的(45°這將是direction.x = 0.5和direction.y = 0.5),以及描述每秒移動的speed。該速度將被設置爲3。

  1. 要加速聯繫球,首先需要在班級中實施InputProcessor,該班級負責管理所有ballobjects的移動。接下來,您必須將其設置爲遊戲的InputProcessorGdx.input.setInputProcessor(this);InputProcessor有一個方法touchDown(int x, int y)或類似的東西。 x和y值在屏幕上以像素爲單位給出座標。 如果您在新的Libgdx版本中使用相機或視口(您應該這樣做),則必須使用camera.unproject(x,y)viewport版本(idk確切的方法名稱)。這種方法給你在世界座標系中的位置。然後,您可以簡單地檢查此觸摸板上的哪個球,並將其速度設置爲3.
  2. 要紋理球,必須使用SpriteBatch進行繪製。查看API中的不同draw()方法,並使用最適合您的方法。只需加載一個Texture,它應該是一個帶有圓形紋理的「.png」,其餘部分應該是透明的(alpha = 0)。啓用混合(默認)後,它只會渲染球,即使它實際上是一個矩形形狀Texture

我希望它有幫助