Unity 是一款非常流行且用途广泛的游戏引擎,拥有一长串受支持的平台和设备。3D 游戏可能是您谈到 Unity 时的第一个想法。该引擎甚至曾经被称为Unity 3D!但是,大部分移动、主机和桌面游戏都是以 2D 形式呈现的,因此了解 Unity 为构建 2D 游戏提供的功能非常重要。
在本教程中,您将构建一个 2D 太空着陆器游戏,并在此过程中学习以下技能:
- 如何使用精灵和相机。
- 所有关于_物理2D_组件以及如何处理碰撞和游戏玩法。
- 如何设置 2D 动画和状态。
- 图层和精灵排序如何影响 2D 游戏。
本教程的材料是在 Unity 版本 2020.3 中构建的。
[沿续上文]【Unity】2D太空登录小游戏开发入门教程(上)
二维对撞机和物理
Unity 允许您像在 2D 游戏中一样调整物理 3D 系统的重力。Unity 对新项目的默认重力设置与地球重力相同:根据定义,9.80665 m/s2。但是你把你的宇宙飞船降落在月球上,而不是地球上,月球上的重力大约是地球的16.6%,即1.62519米/秒2。
注意:初学者项目中的重力设置为 -1,以便于飞行并立即测试游戏。
要修改游戏的重力,请点击_“编辑”图标 ▸ 项目设置_ 然后选择物理 2D 选项卡并使用_物理 2D_ 面板将_重力的_ Y 值从 -1 更改为 -1.62519:
事情要变得沉重了!
单击_“开始_”以运行游戏;飞一圈,看看重力如何改变飞船的运动:
重力需要一小步,推进器动力需要一个巨大的飞跃!
与对象碰撞
如果你已经尝试过在场景中导航_着陆器_,你可能已经撞到了一两块石头。这是Unity的2D碰撞系统在工作。
每个应与重力和其他物理对象交互的对象都需要一个 Collider 2D 组件和一个 Rigidbody 2D 组件。
在层次结构中选择_着陆器_游戏对象。
您将看到附加了刚体 2D 和多边形碰撞体 2D 组件。将刚体 2D 组件添加到精灵中,使其受 Unity 的 2D 物理系统的控制。
物理组件快速课程
就其本身而言,刚体 2D 组件意味着重力会影响它所附加到的游戏对象。它还允许您使用对实体施加力的 Physics2D 相关方法从脚本中控制实体。
但是,如果您希望精灵与其他对象交互和碰撞,则还需要一个_碰撞体 2D_ 组件。添加适当的碰撞体组件会使精灵响应与其他精灵的碰撞。
多边形 2D 碰撞体比其他简单碰撞体(如箱形或圆形碰撞体 2D 组件)性能更重,但它们使对象之间的物理交互更加精确。始终使用游戏中可以侥幸逃脱的最简单的碰撞体形状,以确保获得最佳性能。
碰撞面
通过选择层次结构中的_着陆器_游戏对象并单击多边形 2D 碰撞体上的编辑碰撞体来探索宇宙飞船上的_碰撞_体:
将鼠标光标悬停在场景视图中的碰撞体边缘上。手柄允许您移动碰撞体点,您还可以创建或删除点以修改碰撞体的形状:
暂时保持_着陆器_对撞机的形状不变。
注: 附加到 Lander 游戏对象的 Lander.cs 脚本中的代码用于处理与游戏场景中其他对象的碰撞。如果碰撞力的大小超过某个阈值,着陆器将被摧毁。OnCollisionEnter2D
</