【发布时间】:2012-04-03 13:34:33
【问题描述】:
我正在开发一款基于镜子和镜片等光学物品的游戏。我有一个光束。如果光束会击中光学物品,它应该根据物理规则进行反射。我知道光束的方向。所以我需要检测与光学物品的碰撞,所以我无法计算反射。在java中实现光学项目以检测与光束和光学项目的碰撞的最佳方法是什么。 边界框模型不适合我的情况。我正在考虑使用多边形。很容易检测到碰撞点(x,y),但光学项目可以旋转,因此计算角度和反射似乎很难。
你有什么推荐的?
【问题讨论】:
我正在开发一款基于镜子和镜片等光学物品的游戏。我有一个光束。如果光束会击中光学物品,它应该根据物理规则进行反射。我知道光束的方向。所以我需要检测与光学物品的碰撞,所以我无法计算反射。在java中实现光学项目以检测与光束和光学项目的碰撞的最佳方法是什么。 边界框模型不适合我的情况。我正在考虑使用多边形。很容易检测到碰撞点(x,y),但光学项目可以旋转,因此计算角度和反射似乎很难。
你有什么推荐的?
【问题讨论】:
Calculate the angle between the two lines 的镜子和光束。然后你只需要在镜子的另一半上以相同的角度绘制反射光束。
【讨论】:
通常在开发 UI 时,您有一个数据模型和一个呈现数据模型的视图。
你的问题有点不同。您将有一个代表镜子的类和另一个代表镜头的类。类的实例将保存状态信息,例如对象的位置和对象面向的方向。类方法将负责实现镜子和透镜的物理规则。
您的视图绘制逻辑必须做的不仅仅是渲染数据模型。您将不得不遍历对象的所有实例以检测撞击,然后将物理规则应用于光束以查看下一步要去哪里。
虽然光束源、透镜和镜子都是数据模型中的对象,但每次要在视图中绘制光束时都必须计算光束本身。
【讨论】: