[英]Combining Actors in libgdx
對於我的2D自上而下的射手,我想將我的角色(Image / Actor的子類)和他所持的武器(TextureRegion或Actor?)結合起來,這僅僅是出於光學原因。 我的角色內部裝有一個Hero對象,該對象代表他的邏輯部分,例如他的武器,他選擇的武器和他的速度。 他持有的武器也只是邏輯部分,因此那里沒有圖形。 我該如何向玩家添加此武器? 我應該使用一個組,而玩家和武器屬於該組嗎? 還是玩家應該根據自己的位置以自己的繪制方法繪制武器? 但是然后我必須將武器紋理保留在播放器中,並加載與英雄對象當前持有的武器相匹配的武器紋理。 最好的方法是什么?
我應該使用一個組,而玩家和武器屬於該組嗎?
是的,這是正確的方法。
Group
是Stage
一部分,每當移動組時,該組的所有成員( Actors
)都會隨之移動。 它也像一個新的本地坐標系。 實際上,您可以將Player
類設為一個組,而不是將其放在一個組中。 武器本身將被添加到您的玩家組中,並且其位置應固定。 固定表示僅將其設置為一個較小的偏移量,該偏移量將添加到玩家組的位置。
拆分武器和玩家是很有意義的,因為射擊時您可能希望武器“晃動”一點,但是玩家不應該這樣做。
在偽代碼中,您給定的場景可能如下所示:
class Hero extends Actor {
// update logic in act()
// render sprite in draw() depending on the this.getX()/getY()
}
class Weapon extends Actor {
// update logic in act()
// render sprite in draw() depending on the this.getX()/getY()
}
class Character extends Group {
private Hero hero;
private Weapon weapon;
public Character(Hero hero, Weapon weapon) {
this.hero = hero;
this.weapon = weapon;
addActor(hero);
addActor(weapon);
weapon.setPosition(10f, 0f); // small offset to the right
}
}
現在可以使用character.setPosition()
移動整個角色。 但是正如我說的那樣:由於英雄可能會執行邏輯,因此您應該擺脫Character
,將Hero
Group
並為其添加武器。 否則,您的英雄需要參考角色組才能移動。 這也將使武器轉換更加容易。 然后,邏輯英雄可以自己做,而無需管理角色組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.