Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在libgdx中组合参与者_Java_Libgdx - Fatal编程技术网

Java 在libgdx中组合参与者

Java 在libgdx中组合参与者,java,libgdx,Java,Libgdx,对于我的2D自上而下射击游戏,我想结合我的角色(图像/演员的子类)和他持有的武器(纹理区域或演员?),仅仅是为了视觉上的原因。我的角色里面有一个英雄对象,代表他的后勤部分,比如他的武器,他选择的武器和他的速度。他手中的武器也只是逻辑部分,所以里面没有图形。我应该如何将此武器添加到玩家?我应该使用一个团队,而玩家和武器都是该团队的一部分吗?或者玩家应该根据自己的位置用自己的抽法抽武器?但是,我必须将武器纹理保留在玩家内部,并加载与英雄对象当前持有的武器相匹配的纹理。最好的办法是什么 我应该使用一个

对于我的2D自上而下射击游戏,我想结合我的角色(图像/演员的子类)和他持有的武器(纹理区域或演员?),仅仅是为了视觉上的原因。我的角色里面有一个英雄对象,代表他的后勤部分,比如他的武器,他选择的武器和他的速度。他手中的武器也只是逻辑部分,所以里面没有图形。我应该如何将此武器添加到玩家?我应该使用一个团队,而玩家和武器都是该团队的一部分吗?或者玩家应该根据自己的位置用自己的抽法抽武器?但是,我必须将武器纹理保留在玩家内部,并加载与英雄对象当前持有的武器相匹配的纹理。最好的办法是什么

我应该使用一个团队,而玩家和武器都是该团队的一部分吗

是的,这是正确的方法

阶段
的一部分,每当移动组时,该组的所有成员(
参与者
)都会随之移动。它也像一个新的局部坐标系。实际上,你可以将你的
玩家
分为a组,而不是分组。武器本身将被添加到你的玩家组中,并且其位置应该是固定的。固定的意思是,它将只被设置一次,一个小的偏移量将被添加到玩家组的位置

将武器和玩家分开是有意义的,因为在射击时,你可能希望武器“摇晃”一点,但你的玩家不应该这样做

在伪代码中,您给定的场景可能如下所示:

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()
移动整个角色。但正如我所说:既然英雄可能会执行逻辑,你应该摆脱你的
角色
,让
英雄
成为一个
,并在其中添加武器。否则,您的英雄需要角色组的引用才能移动。这也将使交换武器更加容易。逻辑英雄可以自己做,而不需要管理角色组

我应该使用一个团队,而玩家和武器都是该团队的一部分吗

是的,这是正确的方法

阶段
的一部分,每当移动组时,该组的所有成员(
参与者
)都会随之移动。它也像一个新的局部坐标系。实际上,你可以将你的
玩家
分为a组,而不是分组。武器本身将被添加到你的玩家组中,并且其位置应该是固定的。固定的意思是,它将只被设置一次,一个小的偏移量将被添加到玩家组的位置

将武器和玩家分开是有意义的,因为在射击时,你可能希望武器“摇晃”一点,但你的玩家不应该这样做

在伪代码中,您给定的场景可能如下所示:

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()
移动整个角色。但正如我所说:既然英雄可能会执行逻辑,你应该摆脱你的
角色
,让
英雄
成为一个
,并在其中添加武器。否则,您的英雄需要角色组的引用才能移动。这也将使交换武器更加容易。逻辑英雄可以自己做,不需要管理角色组。

那么我的英雄就是角色组,只有武器添加到角色组?当我换武器的时候,我怎么能换武器演员呢?不,你的角色是由英雄和武器组成的团队。如果你翻译角色,英雄和武器都会被翻译。如果你使用libgdx的Scene2D框架的常规操作系统,好的。我必须考虑一下,因为在这种情况下,我需要更改碰撞检测。也许我会使用一个不同的精灵来控制角色武器a和角色武器B,而不是将角色和武器a和武器B结合起来。无论如何谢谢你(:所以我的英雄是团队,只有武器被添加到其中?当我切换武器时,我如何更改武器角色?不,你的角色是由英雄和武器组成的团队。如果你翻译角色,英雄和武器都会被翻译。如果你使用libgdx的Scene2D框架的常规动作系统。啊,好的。我i’我必须考虑一下,因为在这种情况下我需要更改碰撞检测。也许我将使用不同的精灵作为角色持有武器a和角色持有武器B,而不是将角色、武器a和武器B组合在一起。无论如何,谢谢(: