1、目标
创建第3个场景,农舍小屋的场景。这里我们复习下Tilemap的使用,同时通过配置组件实现场景间的切换。
2、创建农舍小屋的Palette
(1)创建Palette预设体
选择Tile Palette面板,点击Create New Palette。
命名为IndoorsTileSet。
选择保存到Assets -> Tilemap -> Tile Palettes目录下。
此时Tile Palettes就会出现刚初始化的IndoorsTileSet.prefab文件。
(2)Palette预设体赋值
选择Assets -> Sprites -> Sprite Textures -> Tile Sprites下的IndoorsTileSet文件,拖到Tile Palette界面下。确保Active Palette为IndoorsTileSet。
然后立即就会弹出提示保存的目录,选择Assets -> Tilemap -> Tiles -> IndoorsTileSet(新建的)目录下。
保存完成后,IndoorsTileSet的内容就有了Sprites图片信息。
同时IndoorsTileSet.prefab文件大小也发生了变更。
(3)小结
通过Create New Palette我们创建了Palette的预设体放到Tile Palettes目录下,通过拖拽Sprites到Palette预设体完成了Palette预设体的赋值,同时Palette预设体的图片存放到了Tiles -> IndoorsTileSet目录下。
3、创建Cabin场景
(1)初始化场景
在Assets -> Scenes 下创建新的场景命名为Scene3_Cabin。
右击Scene3_Cabin选择Open Scene Additive。
删除Scene3_Cabin下的Main Camera,因为PersistentScene下已经有Main Camera。
(2)创建Tilemap地图
将Assets -> Prefabs -> Maps下的Tilemap Grid拖到Hierarchy -> Scene3_Cabin下,
同时右击Tilemap Grid选择Prefab -> Unpack Completely(切断关联,提升性能)。
(3)添加Items对象
右击Hierarchy -> Scene3_Cabin,创建新物体命名为Items,并且修改其Tag为ItemsParentTransform。
(4)添加BoundsConfiner
将Assets -> Prefabs -> Scene下的BoundsConfiner拖到Scene3_Cabin下。
注意:Tilemap Grid / Items / BoundsConfiner 这3个物体是同级别的。
(5)绘制地图
1)Active Target选择Ground1,绘制木制地板。
2)Active Target选择Ground2,绘制地板的边缘
绘制4个角和4条边。
3)Active Target选择Ground1,绘制墙壁和窗户
4)Active Target选择Ground1,绘制房屋边框
同时进门口增加一些木地板。
5)Active Target选择Ground2,绘制地毯
6)Active Target选择Collisions,添加碰撞器
4、调整BoundsConfiner边界
在Inspector界面,选择Edit Collider调整边界。
整体要略大于房屋的大小。
5、添加SceneTeleport
(1)Scene3添加SceneTeleport
将Assets -> Prefabs -> Scene下的SceneTeleport拖到Scene3_Cabin下。
在Scene界面中调整SceneTeleport对象的位置,并且修改Size参考如下:
卸载Scene3_Cabin场景,加载Scene1_Farm场景,通过Tile Palette的Coordinate Brush工具找到门口的坐标为(-10,-7,0)。
卸载Scene1_Farm场景,加载Scene3_Cabin场景,Scene Teleport中的Scene Position Goto设为(-10,-7,0)。
同样,在Scene3_Cabin中,我们找到门口的位置为(-2,-6,0), 不要与SceneTeleport重叠。后续从Scene1_Farm可以跳转到Scene3_Cabin的该位置。
(2)Scene1添加SceneTeleport
卸载Scene3_Cabin场景,加载Scene1_Farm场景。
将SceneTeleport拖入到Scene1_Farm中,调整Size的大小。
打开Collisions的renderer渲染,避免SceneTeleport完全在Collisions的里面(那样用户就永远走不到SceneTeleport的位置),稍微有一点不重合即可。
设置Scene Position Goto为(-2.5,-6,0)
重命名两个Scene Teleport的名称。
6、放置家具
(1)创建桌/椅
在Assets -> Prefabs -> Item下创建新的目录命名为Furniture。
将Assets -> Sprites -> Sprite Textures -> Objects下的Chair和Table分别放到Scene中。
设置Sorting Layer为Instances。
将Chair / Table 放到Furniture生成预设体。
创建完毕后如下:
(2)添加碰撞体
点击Chair这个预设体,添加Box Collider 2D组件,编辑碰撞位置为椅脚部分,Sprite Sort Point为Pivot(否则人站在椅子后面,但是却显示在椅子前面)。
点击Table这个预设体,添加Box Collider 2D组件,编辑碰撞位置如下。
整体界面效果如下:
PS:每次运行时,都要卸载掉Scene1/Scene2/Scene3。