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

Wrap around edge of world with specific customization

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

现在假设我有一个 object 例如一个简单的盒子 10x10。 如果盒子的一半超出上 Y 边缘,我希望超出的部分出现在下方,而盒子的另一部分在上部仍然可见,留在那儿。 总而言之,我想要一个“真正的环绕边缘,就像以前在旧游戏中所做的那样。 我希望我已经足够清楚了...

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

谢谢

我没有使用过 Box2d,但我之前在 Processing 中解决了这个问题,希望逻辑可以轻松翻译

在 Processing 中,矩形被绘制为 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
}

最后我用谷歌搜索了一下,在 Unity 上找到了这篇文章:

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

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

在 Box2D 步骤中,我添加了一些逻辑来检查我的原始 body 的位置。 当它走到边缘时,幽灵 Body 出现在另一边。当原始 Body 使用录音机时,它也有效。每条边上会出现4个鬼体