Unity | 渡鸦避难所-2 | 搭建场景并添加碰撞器

1 规范项目结构

上期中在导入一系列的商店资源包后,Assets 目录已经变的混乱不堪

开发过程中,随着资源不断更新,遵循一定的项目结构和设计规范是非常必要的。这可以增加项目的可读性、维护性、扩展性以及提高团队协作效率

这里先做下简单的目录结构调整:资源包放入 ArtRes 目录,根据业务模块名称创建 Shelter 目录,在该目录下创建 Scenes、Scripts 等目录,分别存放对应的资源

2 场景搭建

1 创建场景并放置资源

在 Shelter/Scenes 下新建场景,将 ArtRes/Pure Poly/Free Low Poly Nature Pack/Scenes/Demo_01 场景中的 Free_Forest 对象复制到业务场景中

在场景中观察到,地形的 X 轴正方向与 Unity 中 X 轴正方向相反,这里可以将地形的根对象沿 Y 轴旋转180度

拖入角色的预制体,放置到地形入口处。考虑到模型需要增加刚体、血条等各种状态,为了便于控制,在 Hierarchy 中选中对象 > 右键 > Create Empty Parent,命名为 PlayerController

2 添加碰撞器

最终目标是控制角色在森林中行走,但由于碳基生物的设定,角色并不能无视石头、树木等障碍物。因此需要给角色和障碍物增加碰撞器

常见的碰撞器中,符合人体形状的,非胶囊碰撞器莫属,添加胶囊碰撞器后,调整尺寸以贴合模型:

障碍物在资源包导入时,已经添加了网格碰撞器:

可以看到 Mesh Collider 中 勾选了 Convex 属性

启用该选项后,Unity 会将网格模型简化为一个凸包(Convex Hull)。凸包是一个包含所有网格顶点的最小凸多面体。凸形状的碰撞检测计算比非凸形状的计算要快得多,所以可以提高游戏的性能

但凸包可能无法完全匹配原始网格模型的形状,特别是对于那些有凹面的模型,凸包可能会大大简化它们的形状。如果需要更精确的碰撞检测,应该将 Convex 属性设置为 false

当 Convex 属性被设置为 true 时,Mesh Collider 可以与其他类型的碰撞器(包括其他的 Mesh Collider)进行碰撞检测。但是当 Convex 属性被设置为 false 时,Mesh Collider 只能与简单的碰撞器(如 Box Collider、Sphere Collider 等)进行碰撞检测,不能与其他的 Mesh Collider 进行碰撞检测

当两个对象碰撞时,可能会发生许多不同的脚本事件,具体取决于碰撞对象的刚体配置

以下图表详细列出了根据附加到对象的组件来调用的事件函数。某些组合仅会使两个对象之中的一个对象受到碰撞的影响,但一般规则是物理特性不会应用于没有附加刚体组件的对象

因此,为了能够让角色和障碍物发生碰撞,还需要为其添加刚体:

3 调整摄像机位置

简单调整下摄像机的位置和角度,让角色保持在视野中心

相关推荐
技术小甜甜1 小时前
【Godot】【入门】编辑器界面速通:场景/节点/Inspector/信号(30 分钟上手不迷路)
编辑器·游戏引擎·godot
小蜗 strong1 小时前
Unity中MRTK下载相关功能配置(适用HoloLens 2 部署)
unity·游戏引擎·hololens
ok406lhq18 小时前
unity游戏调用SDK支付返回游戏会出现画面移位的问题
android·游戏·unity·游戏引擎·sdk
ellis197020 小时前
toLua[八] main场景分析
unity·lua
CreasyChan20 小时前
unity四元数 - “处理旋转的大师”
unity·c#·游戏引擎
野区捕龙为宠21 小时前
unity 实现3D空间音效特性
3d·unity·游戏引擎
老朱佩琪!1 天前
Unity外观模式
unity·游戏引擎·外观模式
程序员茶馆1 天前
【unity】Shader艺术之unity内置变量个性化控制
unity·游戏引擎
CreasyChan1 天前
unity射线与几何检测 - “与世界的交互”
算法·游戏·3d·unity·数学基础
CreasyChan1 天前
unity矩阵与变换 - “空间转换的魔术”
unity·矩阵·c#·游戏引擎