Skip to content

Latest commit

 

History

History
141 lines (84 loc) · 7.1 KB

File metadata and controls

141 lines (84 loc) · 7.1 KB

用户文档

这是 Soft2D-for-Unity 的用戶文档。

介绍

Soft2D 是一个实时 2D 多材料连续体物理引擎,可以模拟流体、弹性体、雪和沙子等材料。Soft2D-for-Unity 插件为 Soft2D 提供了高层封装,并为用户提供了一系列易用的的接口,可以让用户方便地在 Unity 中实现各种物理模拟和渲染效果。

环境要求

Unity 版本 图形 API 渲染管线 脚本后端
2021.3.22f1 或更高 Vulkan 或 Metal Built-in 或 URP IL2CPP

注意:MacOS 目前只支持 M1 芯片。

使用方法

用户可以通过两种方法使用 Soft2D-for-Unity:

  1. 下载本仓库到本地,并在 Unity 中作为一个新项目打开。
  2. 在 Asset Store 中下载插件文件,导入到用户已有的项目中。

使用 Github 上的 Unity 项目

如果用户使用 git 克隆本项目,注意需要使用 git-lfs 来正确获取项目中的二进制文件。

从 Asset Store 下载插件并导入已有项目

Unity Asset Store下载 Soft2D-for-Unity 插件并导入到一个已存在的项目中。当导入完成后,插件会自动弹出一个启动窗口。点击“Run and Restart”会执行以下操作:

  • 项目的 Graphics API 设置会被修改为 VulkanMetal
  • 项目的 Scripting Backend 设置会被修改为 IL2CPP
  • 如果当前管线是 URP,一个名为 SOFT2D_URP_PIPELINE 的宏会被添加到项目设置中。

用户教程

本章节介绍如何在 Unity 编辑器中使用 Soft2D-for-Unity 插件。本章节用到的所有教程场景均可以在 Soft2D/Tutorial/ 中找到。

使用 Soft2DManager 并创建一个 Body

Soft2DManager 是核心的场景管理器,它负责管理场景的参数配置、渲染和管理各个物体(body、 collider 和 trigger)。场景里必须放置一个 Soft2DManager 才能使用插件的相关功能。详细介绍见 Soft2DManager

Body 是一个可以被模拟的连续体,由一组粒子组成。是 Soft2D-for-Unity 中最常用的类型。详细介绍见 Body。下面的视频展示了如何在编辑器中创建一个 body:

Body.mp4

Video on YouTube.

创建 Custom Body

Custom body 是用户指定采样点的 body。用户可以自定义 body 内部的粒子位置。详细介绍见 Custom Body

CustomBody.mp4

Video on YouTube.

创建 Mesh Body

Mesh body 是带有拓扑关系的 Body。每个传入网格的顶点位置会生成一个粒子,它们之间遵循网格内三角形的拓扑关系。详细介绍见 Mesh Body

MeshBody.mp4

Video on YouTube.

创建 Emitter

Emitter 是一个能自由控制发射 body 的发射器。详细介绍见 Emitter

Emitter.mp4

Video on YouTube.

创建 Collider

Collider 是一个障碍物,会阻挡 body 的运动。详细介绍见 Collider

Collider.mp4

Video on YouTube.

创建 Trigger

用户必须启用 Soft2DManager 中的世界查询选项,trigger 才能正常工作。见 世界查询设置

Trigger 是一个拥有特定形状的空间区域,可以检测到经过它的粒子。详细介绍见 Trigger

Trigger.mp4

Video on YouTube.

使用调试工具

使用调试工具可以对场景中的 collider 或者 trigger 进行可视化。详细介绍见 调试工具

DebugTools.mp4

Video on YouTube.

自定义渲染效果

自定义着色器

示例场景

我们提供了数个示例场景用于展示 Soft2D-for-Unity 在游戏中的使用方法。这些示例场景可以在 Soft2D/Samples/ 中找到。

Sandbox

这是一个包含多个关卡的小游戏,用户可以通过鼠标、手指或者重力陀螺仪对场景中的内容进行交互。本仓库中的 unity 项目默认的打包内容是这个小游戏的所有关卡。支持 Windows/Linux/MacOS/iOS/Android 平台。

本场景的后处理效果只在 URP 管线中支持,Built-in 管线不支持后处理效果。

带有后处理效果(URP 管线) 没有后处理效果(built-in 管线)
sandbox sandbox_no_postprocessing

WaterWheel

本场景的后处理效果只在 URP 管线中支持,Built-in 管线不支持后处理效果。

带有后处理效果(URP 管线) 没有后处理效果(built-in 管线)
waterwheel waterwheel_no_postprocessing

Gear

该场景只支持 URP 管线。并且请使用 3D URP 管线以获取正确的光照效果。

gear

Maze

该场景只支持 URP 管线。并且请使用 3D URP 管线以获取正确的光照效果。

maze

FAQ

教程场景在 2D URP 管线中渲染效果表现不正常。

  • 请将相机的背景设置从 Skybox 修改为 Solid Color

skybox_background

修改前 修改后
skybox_background solidcolor_background

如何在一个大规模的世界中模拟很小的物体?

  • 在 Soft2D-for-Unity 中,body 中粒子的采样密度会根据世界的大小来自动调整,更大的世界会导致更稀疏的粒子采样。因此,在一个较大的世界中可能没有足够的精度来模拟非常小的物体。

是否可以为不同的粒子设置不同的渲染材质。

  • 目前粒子通过 Graphics.DrawMeshInstancedIndirect() 方法绘制,暂时不支持为不同的粒子设置不同的材质。