您所在的位置:读书频道 > 移动开发 > Android > 11.8.3 GameObject3D 与DynamicGameObject3D

11.8.3 GameObject3D 与DynamicGameObject3D

2013-10-29 21:55 赵凯/佘建伟 译 清华大学出版社 字号:T | T
一键收藏,随时查看,分享好友!

《Android 4游戏入门经典(第3版)》第11章3D 编程技巧,本章我们揭开了游戏编程的神秘面纱。我们探讨了3D 向量,其使用方法与2D 中的向量类似,仅需要增加一个z 坐标即可!本章也讨论了OpenGL ES 中的光照系统。还探讨了如何借助Matrix 类用少量的代码实现简单的欧拉照相机和跟随照相机。本节为大家介绍GameObject3D 与DynamicGameObject3D。

AD:

11.8.3 GameObject3D 与DynamicGameObject3D

现在已经有了一个十分美观的3D 物体的边界形状,可以很轻松地编写与2D 中GameObject 和DynamicGameObject 相对应的类了。仅需要用Vector3 实例代替其中的Vector2,并用Sphere 类取代Rectangle 类即可。程序清单11-16 展示了GameObject3D 类。

程序清单11-16 GameObject3D.java,用位置和边界表示一个简单物体

  1. package com.badlogic.androidgames.framework;  
  2. import com.badlogic.androidgames.framework.math.Sphere;  
  3. import com.badlogic.androidgames.framework.math.Vector3;  
  4. public class GameObject3D {  
  5. public final Vector3 position;  
  6. public final Sphere bounds;  
  7. public GameObject3D(float x, float y, float z, float radius) {  
  8. this.position = new Vector3(x,y,z);  
  9. this.bounds = new Sphere(x, y, z, radius);  
  10. }  

代码很简单,不必做过多的解释。唯一的难点是这里保存了同一个坐标两次:一次是作为GameObject3D 类的位置成员变量;另一次是作为GameObject3D 类中包含的Sphere 实例的位置成员。这样做虽然有点难看,但是为了代码思路清晰,采取了这种做法。

要从这个类派生DynamicGameObject3D 类也很容易。其代码如清单11-17 所示。

程序清单11-17 DynamicGameObject3D.java,与GameObject3D 对应的动态类
 

  1. package com.badlogic.androidgames.framework;  
  2. import com.badlogic.androidgames.framework.math.Vector3;  
  3. public class DynamicGameObject3D extends GameObject {  
  4. public final Vector3 velocity;  
  5. public final Vector3 accel;  
  6. public DynamicGameObject3D(float x, float y, float z, float radius) {  
  7. super(x, y, z, radius);  
  8. velocity = new Vector3();  
  9. accel = new Vector3();  
  10. }  

这里再次用Vector3 代替了Vector2。

在2D 中,需要重点考虑物体的图形表示(用像素表示大小)与世界模型中使用的单位的关系。而在3D 中则不需要考虑这些!已经加载的3D 模型顶点(例如,来自一个 OBJ 文件)能够用任何单位系统定义。我们不再需要在像素和世界单位之间进行转换,这使得在3D 中工作稍微简单一些。仅需要对美工人员进行培训,使他们提供的模型可以恰当地缩放至适合世界的单位系统。
 

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节

×
分享到:

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

WebWork in Action中文版
本书是一本从头至尾都使用现实世界例子讲述有关编写Web应用程序的书籍。WebWork所强调的内容是:利用框架实现你的项目,而不是被

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i