如何在 andengine 中创建网格?
How can you create a grid in andengine?
我对使用 AndEngine 进行简单的游戏编程很感兴趣。我想做一些基于回合的基本策略。所以我想对某些网格有一个自上而下的视图。这个象棋网格中的每个方块都应该是可点击的(当然在 android 上是可触摸的)。但我无法想象画线和正方形是这样做的最佳解决方案。我想要某种抽象对象列表,我可以将其扩展到不同的行为(单击触发菜单打开,在其他字段上单击触发爆炸,等等......)。
这些年来我一直在几个引擎中寻找这个。这是一个爱好,但我想为它找到一个解决方案。谁能给我一个关于如何以优雅的方式完成的提示?双缓冲、渲染和其他东西并不那么重要。重要的是,每个方块都应该是一个被绘制的对象。
有人吗? ;)
问候。
简单的解决方案就是这样(假设您的屏幕在纵向模式下为 800x480,我假设您有 GLES2-AC 和引擎分支)。
在您的 onCreateScene() 方法中:
Rectangle rect1 = new Rectangle(80, 133, 160, 266, engine.getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY){
if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN){
//here put what you want to be done after your button was pressed
}
}
Rectangle rect2 = new Rectangle(240, 133, 160, 266, engine.getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY){
if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN){
//here put what you want to be done after your button was pressed
}
}
然后你继续 7 次,改变 new Rectangle(x, y....)
中的前两个数字,它们是矩形中心的坐标(第二对数字是矩形的高度和宽度)。 (所以底行有坐标:(80, 133)、(240, 133) 和 (400, 133)。中间行:(80, 399)、(240, 399) 和 (400, 399)。第三行你可以计算out。当然,它不会给你完全覆盖的屏幕。这可以通过将屏幕的 WIDTH 和 HEIGHT 除以某些数字并将其用作矩形的坐标来实现。记住将所有矩形附加到场景并添加
this.setOnSceneTouchListener(getOnSceneTouchListener());
this.setOnSceneTouchListenerBindingOnActionDownEnabled(true);
并为所有矩形注册触摸区域。
更困难的方法是创建 class 例如 MyButton.class
扩展矩形或 sprite class 具有在按下 "button" 时使用的方法.这取决于你真正需要什么。
我对使用 AndEngine 进行简单的游戏编程很感兴趣。我想做一些基于回合的基本策略。所以我想对某些网格有一个自上而下的视图。这个象棋网格中的每个方块都应该是可点击的(当然在 android 上是可触摸的)。但我无法想象画线和正方形是这样做的最佳解决方案。我想要某种抽象对象列表,我可以将其扩展到不同的行为(单击触发菜单打开,在其他字段上单击触发爆炸,等等......)。
这些年来我一直在几个引擎中寻找这个。这是一个爱好,但我想为它找到一个解决方案。谁能给我一个关于如何以优雅的方式完成的提示?双缓冲、渲染和其他东西并不那么重要。重要的是,每个方块都应该是一个被绘制的对象。
有人吗? ;) 问候。
简单的解决方案就是这样(假设您的屏幕在纵向模式下为 800x480,我假设您有 GLES2-AC 和引擎分支)。
在您的 onCreateScene() 方法中:
Rectangle rect1 = new Rectangle(80, 133, 160, 266, engine.getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY){
if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN){
//here put what you want to be done after your button was pressed
}
}
Rectangle rect2 = new Rectangle(240, 133, 160, 266, engine.getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY){
if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN){
//here put what you want to be done after your button was pressed
}
}
然后你继续 7 次,改变 new Rectangle(x, y....)
中的前两个数字,它们是矩形中心的坐标(第二对数字是矩形的高度和宽度)。 (所以底行有坐标:(80, 133)、(240, 133) 和 (400, 133)。中间行:(80, 399)、(240, 399) 和 (400, 399)。第三行你可以计算out。当然,它不会给你完全覆盖的屏幕。这可以通过将屏幕的 WIDTH 和 HEIGHT 除以某些数字并将其用作矩形的坐标来实现。记住将所有矩形附加到场景并添加
this.setOnSceneTouchListener(getOnSceneTouchListener());
this.setOnSceneTouchListenerBindingOnActionDownEnabled(true);
并为所有矩形注册触摸区域。
更困难的方法是创建 class 例如 MyButton.class
扩展矩形或 sprite class 具有在按下 "button" 时使用的方法.这取决于你真正需要什么。