簡體   English   中英

libgdx中的Actor組合

[英]Combining Actors in libgdx

對於我的2D自上而下的射手,我想將我的角色(Image / Actor的子類)和他所持的武器(TextureRegion或Actor?)結合起來,這僅僅是出於光學原因。 我的角色內部裝有一個Hero對象,該對象代表他的邏輯部分,例如他的武器,他選擇的武器和他的速度。 他持有的武器也只是邏輯部分,因此那里沒有圖形。 我該如何向玩家添加此武器? 我應該使用一個組,而玩家和武器屬於該組嗎? 還是玩家應該根據自己的位置以自己的繪制方法繪制武器? 但是然后我必須將武器紋理保留在播放器中,並加載與英雄對象當前持有的武器相匹配的武器紋理。 最好的方法是什么?

我應該使用一個組,而玩家和武器屬於該組嗎?

是的,這是正確的方法。

GroupStage一部分,每當移動組時,該組的所有成員( 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.

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