【问题标题】:Unity 3D - Dynamically 'slicing' background imageUnity 3D - 动态“切片”背景图像
【发布时间】:2019-09-28 05:05:12
【问题描述】:

我对 Unity 还很陌生,不太清楚如何处理这个问题。

我有两张图片,一张上面有云(白天),一张上面有星星(晚上)。我想做的是在场景顶部显示云,在底部显示星星。屏幕中间有一个地面物体,玩家将在上面行走,这应该是两个图像之间的分界线。然而,地面不是一条直线,而是可以有高度差异。

我想出的“解决方案”是使用地面物体对图像进行切片,这样它就可以用作分界线。但不确定这是否可能。也许我可以用 2 个不同的相机做一些事情或以某种方式掩盖图像.. (只是把我自己的想法也扔在这里)我会在这两者之间摸索这些东西,并尝试让话题与我保持同步试过了。

我放了一个附件(希望)让它更清楚。

您好, 卢基

附件:https://imgur.com/a/lblJXPi

【问题讨论】:

  • 其中一个(夜空或白天)可以首先全屏显示,作为图像背景。然后,对于另一部分,使用动态生成的网格/2D 精灵。
  • 感谢您在这里与我一起思考,我尝试了一下,但渲染动态网格对我来说真的很困难。会尝试不同的东西。

标签: image unity3d background slice mask


【解决方案1】:

我想到的第一个解决方案是准备一个图块集。如果您不打算每次都设计不同的部分。因此,如果您不打算进行计算机设计。你可以自己调整大小。

您还可以动态生成带有地面物体 -y 轴的星星和带有 + y 轴的云。你可以使用实例化函数

例子:

public GameObject clouds;
public GameObject stars;
// Start is called before the first frame update
private void Awake()
{
    Instantiate(clouds, new Vector3(this.transform.position.x, this.transform.position.y + 3.625f, this.transform.position.z), Quaternion.identity);
    Instantiate(stars, new Vector3(this.transform.position.x, this.transform.position.y  - 3.625f, this.transform.position.z), Quaternion.identity);
}

当然,您将在这里使用的背景设计必须是可持续的。

Dynamic Background

【讨论】:

  • 这个对我很有帮助,只是通过使用地面位置来实例化新对象非常简单,而且目前看来工作正常。感谢您在这里与我一起思考,解决方案比我想象的要容易!
猜你喜欢
  • 2013-05-09
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-31
  • 2016-10-01
  • 2015-07-05
  • 1970-01-01
相关资源
最近更新 更多