首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java -检索特定类的对象

Java -检索特定类的对象
EN

Stack Overflow用户
提问于 2012-04-03 17:03:32
回答 2查看 281关注 0票数 0

一段时间以来,我一直在用J2ME编程。我想创造“超级”游戏2D现在。首先,拿出最重要的数据:

  • 游戏是指你和士兵一起射击,然后向敌人开火。
  • 每个士兵都是Soldier类的对象(继承Sprite之后的)
  • 每个士兵都能够生成Bullet类的弹对象(也可以继承Sprite之后的)。

我在这里遇到麻烦了。是这样的:子弹击中了士兵。如何将士兵的目标转移到子弹的物体上(反之亦然)以降低士兵的HP。

下一个数据一目了然:

  • Soldier类具有静态字段HP
  • Bullet类获得了静态字段hit包含关于子弹力的数据

我有条件声明,检查球员是否与trpas TiledLayer碰撞。这没什么问题。问题是用子弹检查科里森。collidesWith()方法检查与SpriteTiledLayerLayer的一度对象之间的冲突。子弹的物体会很多。这里是否有这样的选项来检查与特定类型的冲突,而不是与特定类型的特定对象的冲突(不检查与bullet1、bullet2、bullet3作为队列的冲突,以及Bullet的所有类型)?

我的问题。

1.如果发生碰撞,如何将子弹的数据传送给士兵? 2.如何检测与Bullet类型的碰撞,而不是对象--x型子弹号?

EN

回答 2

Stack Overflow用户

发布于 2012-04-03 17:35:13

Object类有一个getClass()方法,它返回给定对象是实例的类的名称。这不是最好的编程实践,但它有效。如果您需要将Bullet数据“传输”到Soldier,那么添加一个接受子弹/士兵的碰撞方法:soldierCollisionEvent(Bullet b),甚至collision(Soldier s, Bullet b)。或者,您可以利用面向对象程序设计让对象共享数据和事件,而不必担心(太多)类类型。

票数 0
EN

Stack Overflow用户

发布于 2012-04-03 17:35:24

您在J2ME中没有反射,所以没有Bullet.class或类似的东西。

即使有,它仍然没有帮助,因为你仍然需要(以某种方式)检查所有的子弹。

但是,您可以尝试做一些更智能的事情,比如跟踪一些您知道离Soldier更近的子弹。如果您愿意,甚至可以尝试用于空间分区的高级算法/数据结构(k-d树,或BVH),这些算法/数据结构在3D计算机图形学中有很好的文档记录,在2D中使用时要简单得多。

祝好运!

编辑:如果你只有一把子弹(比如10颗子弹),那就不需要所有花哨的东西了。这只会使事情变得复杂,只要检查每颗子弹的碰撞情况就可以了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9997991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档