当前位置: 首页 > news >正文

Unity3D仿星露谷物语开发29之创建农舍小屋场景

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。

相关文章:

  • 怎么在智能合约中植入deepseek
  • 如何使用Pytest参数化测试大规模生成单元测试用例
  • 【动态路由】系统Web URL资源整合系列(后端技术实现)【apisix实现】
  • 【设计模式】【结构型模式】桥接模式(Bridge)
  • 案例-04.部门管理-删除
  • vueDevtools和文档整合(前端常用工具/插件)
  • Code::Blocks 创建 C 项目 二
  • 有关Java中的异常和异常处理
  • 图神经网络怎么和LLM结合
  • Docker 入门与实战:从安装到容器管理的完整指南
  • nlp|微调大语言模型初探索(1),LLaMA-Factory
  • 用deepseek学大模型05-线性回归
  • UnityRecorder导出带透明通道的视频和图片
  • Java 版本 24 性能更新:更快、更智能
  • 高效构建与配置高可用负载均衡集群:从理论到实践的全面实施
  • WordPress 角标插件:20 种渐变色彩搭配,打造专属菜单标识
  • LeetCode每日精进:142.环形链表II
  • 应用分层、三层架构和MVC架构
  • 容器运行常见数据库
  • 使用 IntersectionObserver 实现懒加载和无限滚动
  • 首开股份:一季度净利润亏损约10.79亿元,签约金额63.9亿元
  • 国务院任免国家工作人员:颜清辉任人社部副部长
  • “80后”杨占旭已任辽宁阜新市副市长,曾任辽宁石油化工大学副校长
  • 郭向阳任广东省公安厅分管日常工作副厅长(正厅级)
  • 辽宁省委书记郝鹏、省长王新伟赶到辽阳火灾事故现场指导善后处置工作
  • 出行注意防晒补水,上海五一假期以多云天气为主最高33℃