如何在玩家libgdx状态的枚举中添加子状态



在我的游戏中,玩家有两个主要状态;静态和移动。

我想再添加两个状态作为静态状态的子状态,例如上下。

public enum PlayerState {
    STATIC,MOVING;
    public boolean isMoving() {
        return this == MOVING;
    }
    public boolean isStatic() {
        return this == STATIC;
    }

}

如何在枚举中添加此子状态并访问?

现在,我正在以

为单位访问它
private NestState state = NestState.STATIC;
 public void moving() {
    state = NestState.MOVING;
}
public void staticState() {
    state = NestState.STATIC;
}
public boolean isStatic() {
    return state.isStatic();
}
public boolean isMoving() {
    return state.isMoving();
}

我可以看到2个简单的解决方案,这些解决方案允许您具有状态和子状态。第一个是扩大您目前拥有的状态。

public enum PlayerState {
    STATIC_STILL, STATIC_UP, STATIC_DOWN, MOVING_LEFT, MOVING_RIGHT;
    public boolean isMoving() {
         if(this == MOVING_LEFT || 
               this == MOVING_LEFT){
           return true;
         }
         return false;
    }
    public boolean isStatic() {
        if(this == STATIC_STILL || 
               this == STATIC_UP || 
               this = STATIC_DOWN){
           return true;
         }
         return false;
    }
}

第二个选项是创建与此

分开的第二组状态
public enum PlayerSubState {
    UP,DOWN,LEFT,RIGHT;
}

,您的玩家既有游戏Stertate又有一个玩家。

最新更新