[AndEngine学习教程] CollisionDetection 实体碰撞检测(三)

2014-11-24 10:12:00 · 作者: · 浏览: 1
erated method stub

}


});
2.4 把所有角色搬到场景中
[java]
mSpeedController.getControlBase().setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
mRotationController.getControlBase().setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

mScene.attachChild(mFace);
mScene.attachChild(mRectangle);
mScene.setChildScene(mSpeedController);
mSpeedController.setChildScene(mRotationController);

pOnCreateSceneCallback.onCreateSceneFinished(mScene);

5.在场景中注册刷新监听事件

[java]
mScene.registerUpdateHandler(new IUpdateHandler(){

@Override
public void onUpdate(float pSecondsElapsed) {
// TODO Auto-generated method stub
if(mRectangle.collidesWith(mFace)){
mRectangle.setColor(1.0f, 0.0f, 0.0f);
}

else
{
mRectangle.setColor(0.0f,1.0f,0.0f);
}
}

@Override
public void reset() {
// TODO Auto-generated method stub

}


});
有了这个监听后,场景每次的刷新都可以添加处理事件了.所以基本上就完成任务了,呵呵

6.辅助自定义类
[java]
public class MySprite extends Sprite{

public MySprite(float pX, float pY, float pWidth, float pHeight,
ITextureRegion pTextureRegion,
VertexBufferObjectManager pVertexBufferObjectManager) {
super(pX, pY, pWidth, pHeight, pTextureRegion, pVertexBufferObjectManager);
// TODO Auto-generated constructor stub
}

private float mVelocityX = 0;
private float mVelocityY = 0;



@Override
protected void onManagedUpdate(float pSecondsElapsed) {
// TODO Auto-generated method stub
this.mX += mVelocityX * pSecondsElapsed;
this.mY += mVelocityY * pSecondsElapsed;

this.setPosition(mX, mY);

super.onManagedUpdate(pSecondsElapsed);
}

void setVelocity(float vX, float vY){
mVelocityX = vX;
mVelocityY = vY;
}

}

7.运行演示
通过碰撞检测运行的结果如下: