第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Box2dbody 數(shù)組在不同時間創(chuàng)建多個相同的 Body

使用 Box2dbody 數(shù)組在不同時間創(chuàng)建多個相同的 Body

瀟湘沐 2021-05-31 17:01:11
我目前正在制作我的第一個 libgdx 游戲,但我不確定如何在 libgdx/box2d 的上下文中正確使用數(shù)組。我的目標(biāo)是創(chuàng)建一組相同但在不同時間生成的 box2dbody。隨著時間的推移,這樣做會使游戲變得更加困難。我在網(wǎng)上查看了如何做到這一點,最相關(guān)的搜索結(jié)果是用 C++ 編寫的,并且是關(guān)于同時生成 100 個主體的組。我使用轉(zhuǎn)換器將其更改為 Java 并更改了代碼,使其適合我想要的。我最終設(shè)法讓它工作,但現(xiàn)在我遇到了問題,我的一個方法基本上是在新的隨機(jī)位置將對象重新生成到屏幕的另一側(cè),但不幸的是我不知道如何將它應(yīng)用于 b2body那是剛剛創(chuàng)建的。TLDR;我需要幫助修復(fù)我的數(shù)組代碼,以便我的 Respawn() 方法工作,和/或完全修改我的數(shù)組,以便它按照我的意圖工作。任何幫助是極大的贊賞!我的陣列:Shape[] objects = new PolygonShape[4];Body[] bBody = new Body[4];我如何定義我的身體:private Body[] makeObstacle(World world, BodyDef.BodyType type, PolygonShape shape) {    BodyDef bdef = new BodyDef();    bdef.type = type;    bdef.position.set(7, randomYPos);    Body body = world.createBody(bdef);    body.setLinearVelocity(-4, 0);    shape = new PolygonShape();    shape.setAsBox(60 / RadiationPigeon.PPM, 25 / RadiationPigeon.PPM);    FixtureDef fdef = new FixtureDef();    fdef.shape = shape;    body.createFixture(fdef);    return new Body[]{body}}這是我生成身體的方式:public void bodies(){    if(!alreadyExecuted){        if(DistanceM == 10 && DistanceC == 0) {            bBody = makeObstacle(world, BodyDef.BodyType.KinematicBody, (PolygonShape) objects[2]);            alreadyExecuted = true;        }    }}這是我的 Respawn() 方法:private void Respawn(){    if(bBody[2].getPosition().x <= -3){        minWorldY = pigeoncam.position.y - pigeoncam.viewportHeight/2;        maxWorldY = pigeoncam.position.y + pigeoncam.viewportHeight/2;        randomYPos =  MathUtils.random(minWorldY, maxWorldY);        bBody[2].setTransform(7, randomYPos, 0);    }}使用上面的代碼給出了關(guān)于 respawn() 方法的空對象引用錯誤
查看完整描述

2 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗 獲得超9個贊

你重生方法調(diào)用數(shù)組中的第三個對象bBody在這里:bBody[2]。我想象空指針是空數(shù)組位置。嘗試添加一個 catch 來檢查對象是否為空,如下所示:


if (bBody[2] == null) {

    System.out.println("It doesn't exist!");

} else {


    if(bBody[2].getPosition().x <= -3){

        minWorldY = pigeoncam.position.y - pigeoncam.viewportHeight/2;

        maxWorldY = pigeoncam.position.y + pigeoncam.viewportHeight/2;

        randomYPos =  MathUtils.random(minWorldY, maxWorldY);

        bBody[2].setTransform(7, randomYPos, 0);


    }

}

如果控制臺顯示:“它不存在!”,則說明您尚未將主體放入該位置的數(shù)組中。從它的外觀來看,您只是填充了數(shù)組的第一個位置。


查看完整回答
反對 回復(fù) 2021-06-02
  • 2 回答
  • 0 關(guān)注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號