使用容器对象作为遮罩

时间:2018-07-23 01:21:38

标签: c# unity3d

这是2D游戏。

我正在尝试移动另一个对象内的对象,使其一旦超出容器对象边界就消失(就像在Web开发中,具有属性 overflow <的 div / strong>设置为隐藏)。

注意:我可以移动对象,这不是问题。但是我不能使父对象表现为容器。

有关说明,请参见摘要。

.blue {
  width: 400px;
  height: 400px;
  background: blue;
  position: relative;
}

.red {
  width: 200px;
  height: 70px;
  background: red;
  position: relative;
  left: 50px;
  top: 50px;
  overflow: hidden;
}

.yellow {
  width: 20px;
  height: 20px;
  background: yellow;
  position: relative;
  left: 75px;
  top: 20px;
}
<div class="blue">
  <div class="red">
    <div class="yellow"></div>
  </div>
</div>

蓝色方块代表场景。红色矩形是容器对象。黄色正方形是一个嵌套对象。我要达到的目的是:向上移动黄色正方形,直到不再位于红色矩形的可见区域内而看不到它。

不幸的是,尽管黄色嵌套在红色矩形对象中,但每次向上移动时,黄色正方形对象仍在场景中可见(蓝色正方形)。

我是一个整体的JR,我知道这个问题真是愚蠢,但是我还没有找到(或者至少是我认为的)关于如何解决这个问题的答案。

3 个答案:

答案 0 :(得分:1)

我认为您正在寻找Sprite Masks

这是如何使用它们的手册:

Sprite Masks

答案 1 :(得分:1)

如果是2D,请使用精灵蒙版。如果使用3D,我认为如果使用多台摄像机,您可以实现这一目标。创建另一个仅渲染红色和黄色正方形的相机。然后将相机尺寸调整为红色方形。

答案 2 :(得分:0)

您好,您尝试过Collider2D吗?碰撞器具有isTouching功能,因此您实际上可以  检查黄色框是否在红色框内。如果他们不触摸,可以通过禁用渲染器

使其消失
gameobject.getCompponent<Renderer>().enabled = false;

这里是对该方法的引用: https://docs.unity3d.com/ScriptReference/Collider2D.IsTouching.html