【问题标题】:Unity 3D - Transforming beetween worlds/planes?Unity 3D - 在世界/平面之间转换?
【发布时间】:2016-04-11 14:50:47
【问题描述】:

假设我想在 Unity 中复制《凯恩的遗产:灵魂掠夺者》中的位面转移。

有 2 个领域:光谱领域物质领域

光谱领域基于材质领域,只有几何变形和某些对象淡出/变得非交互。

在 Soul Reaver 中,它被用作前往您在 Material 中通常无法到达的区域(扭曲几何),使用其他能力(例如穿过格栅)的手段。

我的问题是:是否有可能在 Unity 3D 中实现这一点? (我需要场景(级别)或对象以某种方式具有 2 个状态,以便我可以将 beetween/distort 切换为实时。)

【问题讨论】:

  • 有趣。我一直在寻找同样的东西。游戏总监 Hennig 专访请看link。有趣的部分是在这一段之后当然,我们的第二个挑战是弄清楚如何存储光谱和物质领域的两组数据,以及如何在两个环境之间实现实时变形。
  • 我没有对这个话题做任何事情毕竟是因为其他事情,但我真的觉得如果世界是在一个建模程序中创造的,比如Blender,那是有可能的材质/光谱领域的动画,与对象相同,只需编写一些代码来调用这些动画,禁用对象和播放器的一些逻辑。

标签: c# unity3d game-physics


【解决方案1】:

我认为这是一个相当高级的话题,有多种方法可以达到至少相似的效果。

但要立即回答您的实际问题 - 是的,这是可能的。

这里有一些我会采取的方法(我想这将是你的下一个问题;))

  • 最简单的方法显然是让游戏对象在“更改”时禁用其碰撞器和渲染器(或整个对象) 领域”。但这肯定不是最好看的方法, 即使有很多运动模糊或其他图像效果也会有所帮助。

    (根据您使用的着色器,对 alpha 值进行动画处理可以 也可以创建褪色效果)

  • 更高级的方式是实际操作顶点(改变对象)。有很多教程 如何改变物体的几何形状。看看 Mesh() 中的 官方文档:
    http://docs.unity3d.com/ScriptReference/Mesh.html

    允许从脚本创建或修改网格的类。

  • 另一种相当简单的方法(未尝试)是使用形状键。我不知道你用什么软件来创建你的 world/models 但搅拌机具有此功能,可让您定义 一个基本形状,然后在搅拌机中编辑顶点并将其保存为 第二个(或更多)形状。 Unity可以在这些之间平滑融合 视频中显示的形状:
    https://www.youtube.com/watch?v=6vvNV1VeXhk

【讨论】:

    【解决方案2】:

    是的,这在 Unity3D 中是可能的,但你的问题很笼统。您可以尝试每个 GameObject 有 2 个模型(可能是脚本上的子对象或字段)并根据玩家所在的领域禁用其中 1 个模型。每个级别可以有 2 个场景并在它们之间切换,尽管这可能太慢了。您可以查看是否有任何插件/资产允许您定义 2 个模型并在它们之间变形。您可能还可以选择许多其他路线,但在您选择路线之前,我真的无能为力。

    【讨论】:

    • 关于您对两个场景的第二个想法,另一种选择是在场景中包含两个场景。也就是说,您在 0,0,0 处有一个级别,而在 1000,0,0 处则有另一个级别。在切换时,您设置一个关卡,另一个关卡,然后将播放器移动到相应的位置(x + 1000 , y, z)。
    • 第一个理论的问题是动画——我将如何创建“变形”或“扭曲”/“变形”效果?最后一个,再一次,没有真正的方法可以实现平稳过渡,而且会更加消耗资源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 2014-11-21
    • 1970-01-01
    • 2012-05-31
    相关资源
    最近更新 更多