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);
}
}
}