通过特定的定制环绕世界的边缘

时间:2015-05-19 05:46:11

标签: c++ box2d

我一直在四处寻找能够为身体包裹世界边缘的最佳方法。 我设法使用这个主题来做到这一点: How do I make a Box2D wrap around world? 使用SetTransform()我可以使它出现在另一个X / Z端。

现在让我说我有一个对象,例如一个简单的盒子10x10。 如果盒子的一半超出上Y边缘,我希望超出的部分出现在下方,而上部仍然可见的盒子的另一部分留在那里。 总而言之,我想要一个真正的环绕式边缘,就像在旧游戏中一样。 我希望我足够清楚......

编辑: 我添加了一张图片来解释我的意思: enter image description here

由于

2 个答案:

答案 0 :(得分:0)

我没有使用过Box2d但我在处理之前已经解决了这个问题,希望逻辑能够轻松转换

在处理中,矩形在位置rect(x, y, rectangleWidth, rectangleHeight)处绘制为xy代表矩形的左上角。矩形的宽度和高度分别从xy

分别向右和向下

这个想法是正常绘制矩形,除非底部离开视口的底边(因为矩形的高度指向基于y)。如果矩形不在视口的下边缘,那么您将绘制两个部分矩形

在下面的代码中,height是视口的高度

if (y < height-10)
  rect(x, y, 10, 10); // Normal condition, entire rectangle
else {
  rect(x, 0, 10, 10-(height-y)); // Top partial rectangle
  rect(x, y, 10, height-y); // Bottom partial rectangle
}

答案 1 :(得分:0)

最后我用Google搜索了一篇关于Unity的文章:

http://gamedevelopment.tutsplus.com/articles/create-an-asteroids-like-screen-wrapping-effect-with-unity--gamedev-15055

在Box2D上,我创建了8个鬼体,它们按照文章中的定义进行了定位。

在Box2D步骤中,我添加了一些逻辑来检查原始身体的位置。 当它到达边缘时,Ghost Body出现在另一边。当原始的身体进入一个角落时它也起作用。每个边缘都会出现4个鬼体。