Android 如何在andengine中将实体设置为网格
我将创建一个独特的实体,在Andengine中指定顶点 我用这些顶点制作了一个网格,但在将实体注册到网格时遇到了问题 Eclispe在此代码段的最后一行加上红色下划线:Android 如何在andengine中将实体设置为网格,android,box2d,andengine,Android,Box2d,Andengine,我将创建一个独特的实体,在Andengine中指定顶点 我用这些顶点制作了一个网格,但在将实体注册到网格时遇到了问题 Eclispe在此代码段的最后一行加上红色下划线: Mesh UniqueBodyMesh = new Mesh(0, 0, MeshTriangles,UniqueBodyVerticesTriangulated.size(), DrawMode.TRIANGLES,this.getVertexBufferObjectManager()); UniqueBodyMesh.set
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));
我试着编写一个类来扩展网格,实现iReashape,并使用我自己的算法计算形状的宽度和高度,但它似乎完全错误,不起作用
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);
}
}
类myMesh扩展了网格实现IAreaShape
{
私人浮动宽度;
私人浮动mhweight;
浮动[]mBufferData;
公共myMesh(float pX、float pY、float[]pBufferData、,
int pVertexCount,DrawMode pDrawMode,
VertexBufferObjectManager(pVertexBufferObjectManager){
super(pX、pY、pBufferData、pVertexCount、pDrawMode、pVertexBufferObjectManager);
mBufferData=pBufferData;
}
@凌驾
公共浮点getWidth(){
浮点数minX=100000;
浮点最大值=-100000;
对于(int i=0;i maxX)
{
maxX=mBufferData[i];
}
}
System.out.println(“宽度:”+(maxX-minX));
mWidth=最大值-最小值;
返回mWidth;
}
@凌驾
公众浮标高度(){
浮点数=100000;
浮动最大值=-100000;
对于(int i=1;i max)
{
maxY=mBufferData[i];
}
}
this.mHeight=maxY-minY;
返回mhweight;
}
@凌驾
公共浮点数getWidthScaled(){
返回getWidth();
}
@凌驾
公共浮点数getHeightScaled(){
返回getHeight();
}
@凌驾
公共空间设置高度(浮标高度){
this.mHeight=pHeight;
}
@凌驾
公共空白设置宽度(浮动宽度){
this.mWidth=pWidth;
}
@凌驾
公共无效设置大小(浮动宽度、浮动高度){
设置宽度(pWidth);
设定高度(pHeight);
}
}
}您的问题是否得到了帮助?否则,我可以为您提供帮助。我使用CodeAndWeb PhysicsEditor应用程序找到了解决问题的另一个解决方案,但如果您可以帮助我将实体设置为网格,则该解决方案将是gr8。谢谢您等待一段时间,我将为您提供答案。@Siddharth答案在哪里??