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 调整摄像机位置

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

相关推荐
魔士于安10 小时前
unity 音乐会场景 unity2022
游戏·unity·游戏引擎·贴图·模型
一线灵12 小时前
Axmol 3.x 输入系统重构:从 Touch/Mouse 到统一 Pointer,再到现代 InputField
重构·游戏引擎
Zwarwolf12 小时前
Godot零散知识点项目汇总
游戏引擎·godot
Mediary12 小时前
Unity is running with Administrator privileges, which isnot supported...
unity
游乐码15 小时前
Unity基础(十四)场景异步加载
unity·游戏引擎
mxwin15 小时前
Unity Shader URP:法线在空间变换上的特殊性
unity·游戏引擎·shader
nnsix15 小时前
Unity 动态批处理、静态批处理、GPU Instaning、SRP Batcher 笔记
笔记·unity·单一职责原则
charlee4416 小时前
Unity在安卓端如何调试输出信息
android·unity·adb·游戏引擎·真机调试
TCW112118 小时前
Minetest游戏引擎源代码解析
游戏引擎