0

我目前正在尝试使用 SlimDX 在 C# 中编写一个小游戏引擎,只是为了好玩。

我希望我的世界是可破坏的,所以我必须能够修改我的地图。我的地图目前是基于矢量的,由ID2D1PathGeometry(SlimDX 中的 PathGeometry)对象表示。使用ID2D1Geometry(SlimDX中的几何)的 CombineWithGeometry 方法修改此对象。

为了进行合理的碰撞检测,我需要了解我的 ID2D1PathGeometry 对象的确切形状,例如计算球在墙壁上弹跳的角度。

那么,是否可以访问我的 ID2D1PathGeometry 对象的所有或特定(每个位置)段/线/点?还是有其他更好的方法来实现我的目标,例如将所有线条和形状额外存储在另一个数据结构中?

请注意,基于位图的地图不是这里的方法,因为我不想将内存作为地图大小的限制。

最好的问候, Emi

4

1 回答 1

1

无法仅检索靠近某个点的几何线段,但有一种方法可以检索所有几何线段。

  1. 实现一个继承自 ID2D1SimplifiedGeometrySink 的类。
  2. 创建该类的一个实例并将其传递给 ID2D1Geometry::Simplify。

更多信息和示例在这里How to Retrieve Geometry Data by Extending ID2D1SimplifiedGeometrySink

如果您有兴趣仅检索接近某个点的部分,也许您想:

  1. 创建围绕兴趣点的矩形几何图形。
  2. ID2D1Geometry::CombineWithGeometry通过使用 D2D1_COMBINE_MODE==D2D1_COMBINE_MODE_INTERSECT将其与您的几何图形相交。
  3. 使用上述方法获取相交几何体的汇。

更多信息:ID2D1Geometry::CombineWithGeometry 方法

于 2013-01-24T21:32:46.417 回答