package fight3D; import framework.gameMain.Mode; import framework.gameMain.ModeFreeFall; import framework.gameMain.ModeOnGround; import framework.physics.Velocity3D; public class StateJump extends StateOnce { private Velocity3D initialVelocity = new Velocity3D(0.0, 10.0, 0.0); void setSpeed(double speed) { initialVelocity.setY(speed); } public boolean canChange(State nextState, Mode mode) { if(mode instanceof ModeOnGround) { if(nextState instanceof StateNormalRight) return true; else if(nextState instanceof StateNormalLeft) return true; } if(mode instanceof ModeFreeFall) { //落下中 if(nextState instanceof StateJumpAttack) return true; if(nextState instanceof StateUpperAttack) return true; // ジャンプした直後は対空攻撃ができる(操作性上の理由) if(nextState instanceof StateFlinch) return true; if(nextState instanceof StateLeftMove) return true; if(nextState instanceof StateRightMove) return true; if(nextState instanceof StateGuard) return true; if(nextState instanceof StateNormalRight) return true; if(nextState instanceof StateNormalLeft) return true; } return false; } public Velocity3D getInitialVelocity() { return initialVelocity; } }