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

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 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 网友们我该怎么办啊,急
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 目标跟踪,计算机视觉
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败