当前位置: 首页 > 知识库问答 >
问题:

随机位置持续时间libgdx

郑和泰
2023-03-14

我试图用libgdx做一个游戏,但有一个问题。我已经找得很好了,但我找不到解决办法。

public class MainScreen implements Screen {

SpriteBatch batch;
private Texture carte;
private Texture mario;
private Array<Rectangle>foret;
private Animation animation;
private float time;
private Rectangle mari;
private Vector2 position;
private Rectangle mickey ; 
Game game;
public MainScreen(Game game) {
    this.game = game;
    batch = new SpriteBatch();
    carte = new Texture(Gdx.files.internal("foret.png"));

    animation = new Animation(3/3f , new TextureRegion(new Texture("mario1.png")) , new TextureRegion(new Texture("mario2.png")) , new TextureRegion(new Texture("mario3.png")));

    foret = new Array<Rectangle>();

}


public void carte(){
    foret = new Array<Rectangle>();
    for(int i =0 ; i<7 ; i++){
        for(int j =0 ; j<7 ; j++){
            Rectangle fore = new Rectangle();
            fore.x = (i*100)+100;
            fore.y = (j*50)+20 ;
            fore.width = 64;
            fore.height = 64;
            foret.add(fore);
            batch.draw(carte ,fore.x , fore.y , 64 , 64 );
        }
    }
}
public Rectangle depMarioRandom(){
    foret = new Array<Rectangle>();
    for(int i =0 ; i<7 ; i++){
        for(int j =0 ; j<7 ; j++){
            Rectangle fore = new Rectangle();
            fore.x = (i*100)+100;
            fore.y = (j*50)+20 ;
            fore.width = 64;
            fore.height = 64;
            foret.add(fore);
        }}
    int random = (int) ( Math.random() * foret.size );
    Rectangle randomX = foret.get(random);
     return randomX;

}

@Override
public void show() {


}
@Override
public void render(float delta) {

    Gdx.gl.glClearColor(1, 1, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);


    this.mari = depMario();
    time += delta;
    Vector2 position = new Vector2(this.mari.x, this.mari.y);

      // i try te do a copy and scaling whith time but it doesn't work

    position.cpy().scl(time);

    batch.begin();
    carte();

    batch.draw(animation.getKeyFrame(time), position.x, position.y, 64, 64);
    animation.setPlayMode(Animation.PlayMode.LOOP);


    batch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {

}
}

共有1个答案

苏高远
2023-03-14

我已经读过你的问题好几次了,这是我所理解的

你想让你的心脏有一秒钟的rondom中毒,你可以这样做

 counterTime += Gdx.graphic.getDeltaTime();
        time += delta;
        if(counterTime > 1 ) {// each second ==> one call to position random
            // putting the random position here
            position = new Vector2(this.mari.x, this.mari.y);
            counterTime = 0; // reset to 0;
        }

    // do not scall anything


    batch.begin();
    carte();

如果还有什么,请留言

编辑:

但是您只需要在create()方法中第一次初始化位置

 类似资料:
  • 在ISO 8601中,持续时间的格式为PT5M(5分钟)或PT2H5M(2小时5分钟)。我有一个JSON文件,其中包含这种格式的值。我想知道spark是否可以提取分钟的持续时间。我尝试将其读取为“DateType”,并使用“minutes”函数获取分钟数,结果返回空值。 示例json 目前,我正在将其作为字符串读取并使用“regex_extract”函数。我想知道一种更有效的方法。 https:/

  • 问题内容: 我正在开发一个简单的插件。现在,我正在尝试添加振动属性。但是此代码不起作用。我要去哪里错了?我的代码如下。你能帮我吗。 Android: 导入android.os.Vibrator; } Unity3D: 按钮事件: 提前致谢… 问题答案: 我的解决方法如下。 统一: 另外,我在1分钟之前找到了Manifest.xml文件示例。现在,该插件正在运行。

  • 我正在尝试创建一个蛇游戏,我使用箭头键或WASD移动蛇。最初,蛇的速度很慢,并且以每秒2帧的速度移动(就像经典的蛇游戏),我希望当我按住其中一个键时,蛇的移动速度更快,当我松开它时,将其设置为原始速度。 我试着在按下ON键的情况下改变移动速度: 然后在我发布时将其更改为正常速率: *运动是一条时间线,从游戏开始到蛇停止或死亡。 代码按我的预期工作,但每次我按下一个键时,它都会加速一个周期,然后变慢

  • 问题内容: 如何获取格式为2个字符串的持续时间? 我正在尝试使用Calendar类并检查。我与此有关的问题是它不一致。知道我在做什么错吗?每次我运行该程序时,如果没有,输出40-70行到控制台。 问题答案: 那是一个已记录的错误。 尝试在设置日历之前清除日历:

  • 许多记者将显示测试持续时间,以及标记缓慢的测试,如“spec”记者所示: 要调整被认为“慢”的东西,您可以使用以下slow()方法: describe('something slow', function() { this.slow(10000); it('should take long enough for me to go make a sandwich', function() { /

  • 在我的应用程序中,用户需要能够输入持续时间,包括分钟和秒。 我正在考虑使用Windows中的控件来更改时间,虽然我只需要几分钟和几秒钟,而且箭头也很好,但不是必需的。 JavaFX 2中是否已经有此控件 如果没有,我如何创建这样的控件 上述Windows控件的屏幕截图: 谢谢你的提示!