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. TCP协议是安全的吗?

    2023-12-13 23:56:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-13 23:56:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-13 23:56:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-13 23:56:03       18 阅读

热门阅读

  1. Go 语言指针

    2023-12-13 23:56:03       47 阅读
  2. PHP中什么是Composer?

    2023-12-13 23:56:03       33 阅读
  3. oracle 查看统计信息

    2023-12-13 23:56:03       35 阅读
  4. vue2 vue-router引入使用详解

    2023-12-13 23:56:03       38 阅读
  5. k8s之高级调度

    2023-12-13 23:56:03       46 阅读
  6. 说说webpack中常见的loader?解决了什么问题?

    2023-12-13 23:56:03       40 阅读
  7. 利用websockify将websocket通信转换成tcp

    2023-12-13 23:56:03       36 阅读