0

Andengineで頂点を指定して独自のボディを作成していきます

これらの頂点でメッシュを作成しましたが、ボディをメッシュに登録する際に問題があります

Eclipse は、このスニペットの最後の行に赤い下線を引きます。

Mesh UniqueBodyMesh = new Mesh(0, 0, MeshTriangles,UniqueBodyVerticesTriangulated.size(), DrawMode.TRIANGLES,this.getVertexBufferObjectManager());
UniqueBodyMesh.setColor(1f, 0f, 0f);
mScene.attachChild(UniqueBodyMesh);
FixtureDef uniqueBodyFixtureDef = PhysicsFactory.createFixtureDef(20f,0.5f, 0.5f);
Body uniqueBody = PhysicsFactory.createTrianglulatedBody(mPhysicsWorld,UniqueBodyMesh, UniqueBodyVerticesTriangulated,BodyType.DynamicBody, uniqueBodyFixtureDef);
mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(UniqueBodyMesh, uniqueBody));

ここに画像の説明を入力

Mesh を拡張して IAreaShape を実装し、独自のアルゴリズムを使用して形状の幅と高さを計算するクラスを作成しようとしましたが、完全に間違っているようで機能しません

class myMesh extends Mesh implements IAreaShape
{

    private float mWidth;
    private float mHeight;

    float[] mBufferData;

    public myMesh(float pX, float pY, float[] pBufferData,
            int pVertexCount, DrawMode pDrawMode,
            VertexBufferObjectManager pVertexBufferObjectManager) {

        super(pX, pY, pBufferData, pVertexCount, pDrawMode, pVertexBufferObjectManager);
        mBufferData = pBufferData;
    }

    @Override
    public float getWidth() {
        float minX = 100000;
        float maxX = -100000;
        for(int i=0;i<mBufferData.length;i+=3)
        {
            if(mBufferData[i] < minX)
            {
                minX = mBufferData[i];
            }
            if(mBufferData[i] > maxX)
            {
                maxX = mBufferData[i];
            }
        }
        System.out.println("Width : " + (maxX - minX));
        mWidth = maxX - minX;
        return mWidth;
    }

    @Override
    public float getHeight() {
        float minY = 100000;
        float maxY = -100000;
        for(int i=1;i<mBufferData.length;i+=3)
        {
            if(mBufferData[i] < minY)
            {
                minY = mBufferData[i];
            }
            if(mBufferData[i] > maxY)
            {
                maxY = mBufferData[i];
            }
        }

        this.mHeight = maxY - minY;
        return mHeight;
    }

    @Override
    public float getWidthScaled() {
        return getWidth();
    }

    @Override
    public float getHeightScaled() {
        return getHeight();
    }

    @Override
    public void setHeight(float pHeight) {
        this.mHeight = pHeight;

    }

    @Override
    public void setWidth(float pWidth) {
        this.mWidth = pWidth;

    }

    @Override
    public void setSize(float pWidth, float pHeight) {
        setWidth(pWidth);
        setHeight(pHeight);

    }

}

}

4

0 に答える 0