unity3d - 如何在 Unity 中旋转等轴测图
问题描述
我计划开发一款可以称为等距的 Unity 游戏,只是玩家必须具备将屏幕旋转 90 度的能力。关键特征是旋转本身必须非常顺利地进行。
想象一下屏幕上显示的等距地图。玩家向右滑动,地图顺时针旋转 90 度。如果玩家慢慢滑动,他实际上可以看到地图如何旋转并享受游戏对象图形的细节。但是滑动只会将东西旋转 90 度。
我的关键问题是 - 在 2D 等距项目中可以实现这样的效果,还是我必须通过 3D 项目路线?我有一种直觉,2D 图形无法实现平滑旋转。但另一方面,除了旋转部件,我根本不需要 3D 功能。
那么,我应该在 Unity 中进行 2D 项目还是 3D 项目?
解决方案
您绝对可以旋转 2D 等轴测图。作为一个很好的例子,看看要塞。
让我们看看如何实现这种旋转。
等轴测投影是一种在技术和工程图纸中以二维形式直观地表示三维对象的方法。
瓦片存储在一个简单的二维数组中:
[[0,1,2],
[[3,4,5],
[[6,7,8]]
大多数旋转魔法发生在相机上。因此,无需修改原始 tilemap,您只需对其进行处理并返回一个新的 tilemap。
您可以通过遍历每个图块、翻转组件并否定其中一个值来旋转整个地图。
向左旋转:
(x, y) => (-y, x)
[[2,5,8],
[[1,4,7],
[[0,3,6]]
右旋:
(x, y) => (y, -x)
[[6,3,0],
[[7,4,1],
[[8,5,2]]
视觉上精灵保持不变。这适用于即时 90 度旋转。
添加过渡是可能的,但它不会很漂亮,因为您会看到瓷砖之间的间隙。
推荐阅读
- excel - 如何使用 VBA excel 在 Internet Explorer 文本框中输入数据
- javascript - 将 Redux 存储中的对象数组渲染为 React 组件
- java - 如何在 JTextField 中禁止特殊字符
- java - 根据映射到类的 yaml 中的条件查找“行”字段
- cassandra - scylla读取路径和cassandra读取路径有什么区别?
- ios - iOS 应用内购买 恢复完成后自动购买
- solr - 如果与查询字符串的 50% 匹配,如何查询 Solr 以获取文档?
- powershell - 使用 PowerShell 创建文件夹和过滤器
- apache-kafka - 没有枚举常量 org.apache.kafka.common.protocol.SecurityProtocol.CLIENT aws MSK
- unit-testing - 意外的标识符 Jest Vue SVG