簡體   English   中英

libgdx中的線程和移動精靈的一般問題

[英]threading in libgdx and general questions to move sprites

我正在重新組裝我為Android寫的游戲。 它是用簡單的畫布編寫的,用於學習基礎知識。 為了達到更高的水平,我將在libgdx的幫助下編寫它。 為了做到這一點,我想到了一個stage ,我添加我的Actors (怪物,技能,如果他們是活躍的,角色和可能是粒子)。 我讀到這是一個討論2D游戲的好方法。

關於它的一些更多信息。 這是一個基於方形系統的2D RPG。 每一步都是移動到下一個廣場。(也許是后面的瓷磚。目前背景是單張圖片)

在舊版本中,我為每個Monster使用了線程,因此他們可以按照“希望”處理和做出反應。 這在libgdx中是否也可以,或者我是否需要以不同的方式處理它?

如果我想將角色從一個移動到下一個方格,我有一個計算的時間,我通過改變它的像素位置將精靈從一個方格移動到下一個方格。 在libgdx中,我將使用方塊作為init的相機。 所以(40f,30f)例如。 像我在舊游戲中那樣在thread移動角色是否有效? 所以我知道從一個廣場到下一個廣場需要500毫秒,所以每50毫秒ppuX需要+ 0.1f。 我也根據它更新了精靈。 因此,如果它移動得更快,精靈變得更快。

我也用這種方式編寫了技能。 例如,火球是一個被線程移動直到它碰到某個東西的圖片。

看到“原型”的圖片。 用帆布原型的圖片

這可能是可能的,但是為每個實體分配一個線程是一個非常糟糕的主意 - 事實上它很糟糕,它有一個相應的TheDailyWTF條目:

http://thedailywtf.com/Articles/Sprite_Threading.aspx

在這種方法中,您不僅不必要地消耗資源,而且從長遠來看,您也會危及您的理智。 我相信鏈接條目以及評論,詳盡闡述了為什么會這樣。

通常,libgdx通過ApplicationListener類(特別是render()方法)支持“主循環”模型。 有很多教程可以幫助您入門, 其中包括一個適用於Android 的教程

我知道這種方法起初可能看起來更有限,但它允許更可靠的代碼。

在LibGdx中,將繼續調用Game類的render()方法。 在這種方法中,你可以做4件事。

1)過程輸入
2)更新精靈/演員
3)檢查碰撞
4)渲染世界

您無需為移動游戲對象創建單獨的線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM