快速业务通道

创建Eclipse游戏插件,第2部分: 构建和发射BB枪 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
          GL.glTexCoord2d(0.0f,0.0f); GL.glVertex3fv(v11);            GL.glTexCoord2d(1.0f,0.0f); GL.glVertex3fv(v12);            GL.glTexCoord2d(1.0f,1.0f); GL.glVertex3fv(v13);            GL.glTexCoord2d(0.0f,1.0f); GL.glVertex3fv(v14);          GL.glEnd();        GL.glEndList();      }

清单 16 所示的修改保证了整个枪都加上了纹理。

创建Eclipse游戏插件,第2部分: 构建和发射BB枪(12)

时间:2011-02-10 IBM Tyler Anderson

最后一步

现在万事已经俱备,只剩一点儿工作需要完成。需要在 initGL 方法中开启 2 维纹理,如清单 17 所示。

清单 17. 开启纹理

...      GLU.gluQuadricNormals(Bug.QUADRIC, GLU.GLU_SMOOTH);      GL.glEnable(GL.GL_TEXTURE_2D);      this.gun = new Gun(); ...

现在在绘制枪之前,需要绑定要使用的纹理,然后绑定后面的空纹理。这项工作在 draw 方法中进行,如清单 18 所示。

清单 18. 给枪加纹理

...      GL.glTranslatef(-.2f, .2f, 2.5f);      GL.glBindTexture(GL.GL_TEXTURE_2D, Gun.TEXTURES[0]);      gun.draw();      GL.glBindTexture(GL.GL_TEXTURE_2D, Gun.TEXTURES[1]);      GL.glTranslatef(-Bug.RADIUS*bugCount, 0.0f, -20f); ...

现在看看新加上纹理的枪,如图 7 所示。

图 7. 加上纹理的枪

创建Eclipse游戏插件,第2部分: 构建和发射BB枪(13)

时间:2011-02-10 IBM Tyler Anderson

下面,看看虫子被击碎时的样子。

击碎虫子

在虫子被击碎时,必须显示它的击碎情况,然后清除它。下面添加做这两件事的功能。

击碎的样子

对于这个游戏,击碎的虫子分成两个方块,然后消失。第一个方块的顶点由 v1 到 v5 定义,第二个由 v5 到 v8 定义,如清单 19 所示。

清单 19. 定义爆炸的顶点

private static float val = RADIUS*1.35f;      private static float[] v1 = {val, val, 0};      private static float[] v2 = {val, -val, 0};      private static float[] v3 = {-val, val, 0};      private static float[] v4 = {-val, -val, 0};      private static float[] v5 = {0, -val, -val};      private static float[] v6 = {0, val, -val};      private static float[] v7 = {0, -val, val};      private static float[] v8 = {0, val, val};

绘制爆炸

与绘制枪的平面类似,下面要绘制爆炸的两个平面。请在 Bug 类中创建 explode 和 disappear 方法,如清单 20 所示。

清单 20. 爆炸和清除虫子

public void explode(){        GL.glNewList(this.getListIndex(), GL.GL_COMPILE);          GL.glBegin(GL.GL_QUADS);            GL.glColor4fv(this.color);            GL.glVertex3fv(v1);            GL.glVertex3fv(v2);            GL.glVertex3fv(v3);            GL.glVertex3fv(v4);            GL.glVertex3fv(v5);            GL.glVertex3fv(v6);            GL.glVertex3fv(v7);            GL.glVertex3fv(v8);            bug();          GL.glEnd();        GL.glEndList();      }      public void disappear(){        GL.glNewList(this.getListIndex(), GL.GL_COMPILE);        GL.glEndList();      }

exp

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号