LaitoUP 2022-12-08 23:44 采纳率: 100%
浏览 41
已结题

Unity用代码实现Tilemap

向各位请教

  1. 我从png图片切割出了大约1000个spirit
  2. 要用这些spirit中的一部分组成一个地图的地面
  3. 组成地面的spirit有复用
  4. 我有Spirit的排列序号,假设是3×3的地图大小,序号如1,1,1;1,2,1;2,3,2形式

请问处理的思路是什么?
我应该先将spirit读取为tilebase,再进行操作?
代码操作的话,是不是就不需要用tilepalette了,我现在通过tilepalette会生成与spirit对应的assets,这些assets没有用吧?
如果还需要在建立地图时,利用代码赋予某些瓦片碰撞应该怎么处理?
45°2.5D的情况下,如果地图上还有物品,前后遮挡关系,在用代码生成的情况下应该如何解决?如人前面有个桌子,人后面有颗树,桌子会遮挡部分的人,人会遮挡树。

  • 写回答

4条回答 默认 最新

  • wzqstudio 2022-12-09 09:42
    关注

    首先,您可以将 spirit 读取为 tilebase,然后使用您提供的序号来组成地图。在这种情况下,您可以根据序号计算出每个瓦片应该放置的位置,然后将对应的 tilebase 实例放置到地图中。

    关于您的第二个问题,在这种情况下,您不需要使用 tilepalette 来生成 assets,因为您已经有了 spirit 图片。

    对于您的第三个问题,如果需要在生成地图时赋予某些瓦片碰撞,您可以通过设置 tilebase 实例的碰撞属性来实现。例如,您可以在生成地图时,对某些瓦片设置碰撞属性,使得它们可以被检测到碰撞。

    对于您的第四个问题,在 45°2.5D 的情况下,如果您希望在地图中添加物品,并让它们与地图中的其他物品有遮挡关系,您可以考虑使用深度缓冲(depth buffer)来实现。

    深度缓冲能够记录每个像素所在位置的深度,并根据它们的深度来决定是否渲染某个像素。例如,如果一个物品在另一个物品的前面,那么它就会将前面的物品遮挡住,而在渲染时,深度缓冲会根据物品的深度来决定是否渲染它,从而实现遮挡关系。

    您可以通过设置摄像机的深度缓冲属性,来启用深度缓冲。然后,在渲染物品时,您需要为它们设置正确的深度值,以便深度缓冲能够正确地决定是否渲染它们。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 创建了问题 12月8日

悬赏问题

  • ¥15 对于这个问题的解释说明
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。