一、项目准备:5分钟搭好开发环境与基础场景
做游戏前先得把“工作台”搭好,这一步很简单,但新手常在这里踩坑。我 你用Unity 2021.3.x LTS版(长期支持版),别用最新版!去年有个粉丝不听劝,用了2023.1版,结果导入老版本资源时各种兼容性报错,折腾2小时才换回LTS版。LTS版在Unity官网就能下,选Windows或Mac版,安装时记得勾选“Microsoft Visual Studio”(写代码用)和“Android Build Support”(想导出手机版的话,不过今天先做PC版)。
装好Unity后,新建3D项目,名字就叫“SoccerEatBlocks”。进编辑器后,先把默认的“Main Camera”位置调一下:选中摄像机,在Inspector面板把Transform的Position设为(0, 5, -10),Rotation设为(25, 0, 0)——这样能从斜上方看到整个场景,就像玩贪吃蛇时的上帝视角。
接下来建基础物体,就用Unity自带的Primitive(基础几何体),不用自己建模:
- 地面:右键3D Object→Plane,重命名为“Ground”,Scale设为(2, 1, 2)(让地面大一点),在Inspector点Add Component→Mesh Renderer→Materials→选择一个绿色材质(像足球场草坪)。
- 足球:右键3D Object→Sphere,重命名为“SoccerBall”,Position设为(0, 0.5, 0)(让球刚好在地面上),Scale设为(0.5, 0.5, 0.5)(球别太大),材质选黑白相间的(像足球)。
- 方块:右键3D Object→Cube,重命名为“Block”,Position设为(3, 0.5, 0)(先放一个当示例),Scale设为(1, 1, 1),材质选红色(显眼)。
场景搭好后,记得按Ctrl+S保存场景,名字叫“GameScene”。这一步看似简单,但我见过有新手做完场景忘了保存,Unity崩溃后白忙活半小时,所以养成随手保存的习惯很重要。
下面是项目核心物体和组件的清单,你可以对着检查有没有漏:
物体名称 | 类型 | 核心组件 | 作用 |
---|---|---|---|
Ground | Plane | Mesh Collider | 作为游戏地面,提供碰撞检测 |
SoccerBall | Sphere | Rigidbody、Sphere Collider | 玩家控制的足球,有物理效果 |
Block | Cube | Box Collider | 被收集的方块,碰撞后得分 |
Main Camera | Camera | – | 显示游戏画面 |
表:足球吃方块游戏核心物体清单,新手 对照检查组件是否齐全
二、核心功能实现:从足球控制到得分系统的全流程
场景搭好了,现在来实现“能玩起来”的功能。这部分是重点,我会把每个功能拆成“原理+代码+调试技巧”,确保你不仅会做,还知道为什么这么做。
足球移动控制:用Rigidbody实现物理效果
你可能会想:“让球动起来还不简单?直接改Transform.position不就行了?” 但那样球会像“幽灵”一样穿模,没有重力和碰撞感。Unity官方文档里明确说过:“对于需要物理交互的物体,应始终使用Rigidbody组件而非直接修改Transform,以确保物理引擎正确计算碰撞和运动”(原文可以看Unity Rigidbody文档)。
给足球加Rigidbody组件:选中SoccerBall,Add Component→搜索“Rigidbody”,勾选“Use Gravity”(让球受重力掉在地上),Mass设为1(球的质量,1kg比较合适),Drag设为0.1(空气阻力,让球滚动时慢慢停下,更真实)。
然后写控制脚本:右键Project窗口→Create→C# Script,命名为“BallController”,双击用Visual Studio打开。代码不用复杂,核心是“按方向键时给球一个力”我之前做的时候就遇到过这个问题,玩家刚开局球旁边就刷出方块,得分太容易,加了这段代码后就正常了。
到这里,一个能玩的“足球吃方块”小游戏就做好了!你可以试试改改参数:把moveSpeed调到15让球更快,或者把方块材质换成彩色的(在Asset Store搜“Free Color Materials”有免费资源)。如果你想进一步优化,可以加个游戏结束条件(比如碰到黑色方块结束),或者给方块加旋转动画。
对了,完整源码我放在了GitHub上(搜“SoccerEatBlocksDemo”就能找到),里面包含所有脚本、场景和材质,下载后用Unity 2021.3.x版打开,直接按Play就能运行。如果导入后报错,先检查Package Manager里的“Input System”和“TextMeshPro”是不是最新版,更新一下通常就能解决。
你跟着做完后,有没有发现Unity其实没那么难?很多新手觉得难,是因为一开始就挑战太复杂的项目。这种“控制一个物体+收集物品+得分”的模式,其实是很多小游戏的基础(比如贪吃蛇、Flappy Bird),学会了这个,以后做其他小游戏也能举一反三。做好了记得在评论区告诉我你的最高得分,我看看谁能玩到100分以上!
运行游戏时足球一动不动,按方向键没反应,这问题我碰到过好多次,尤其新手刚开始做项目时特别容易踩坑。你先别着急检查代码,第一步先看看足球那个Sphere物体身上有没有挂Rigidbody组件——就是在Inspector面板里找找,有没有一个带着小图标、写着“Rigidbody”的组件。要是没有这个,球就像块石头钉在地上,根本受不到力,按方向键自然没反应。我之前帮人调过一个项目,他就是忘了加这个,折腾半小时以为代码错了,结果加上Rigidbody,球“咚”一下就掉地上能滚了。
确认有Rigidbody之后,再看看BallController脚本有没有挂对地方——得直接拖到足球物体上,不能挂在地面或者空物体上。挂好了的话,点开脚本组件前面的小箭头,看看moveSpeed参数是不是0,默认应该是10,要是不小心改成0或者负数,球肯定动不了,调回10到15之间比较合适。还有种情况,可能改代码的时候不小心把FixedUpdate里那句AddForce给删了,就是“rb.AddForce(movement moveSpeed);”这句,没有它球就收不到移动的力。要是这些都没问题还没反应,十有八九是Input System的事——你打开Edit菜单,找到Project Settings,点Player,在Other Settings里往下拉,找到Configuration里的Active Input Handling,这里默认可能是“Input System Package (New)”,新手用老输入系统更稳,改成“Both”或者“Input Manager (Old)”,选完之后重启一下Unity,一般就能解决方向键没反应的问题了。
必须用Unity 2021.3.x LTS版吗?其他版本可以吗?
推荐使用Unity 2021.3.x LTS版(长期支持版),因为LTS版稳定性更高,兼容性问题少。如果使用2022年以后的新版本,可能会出现脚本API变化、资源兼容性报错等问题(比如去年有用户用2023.1版导入老资源时,因Physics模块更新导致碰撞检测异常)。如果一定要用其他版本, 选择2020.3.x LTS及以上版本,避免低于2020版的老旧版本(部分API已过时)。
运行游戏时足球不动,按方向键没反应怎么办?
首先检查足球是否添加了Rigidbody组件(未添加会导致无法受力移动),然后确认BallController脚本是否已挂载到足球上。 检查脚本中moveSpeed参数是否设为0(默认10,可适当调大),或是否误删了FixedUpdate里的AddForce代码。如果按方向键仍没反应,可能是Input System未启用,在Edit→Project Settings→Player→Other Settings→Configuration→Active Input Handling中选择“Both”或“Input Manager (Old)”。
导入源码后出现“缺少TextMeshPro”或“脚本编译错误”怎么解决?
若提示缺少TextMeshPro,在Window→TextMeshPro→Import TMP Essential Resources导入基础资源即可。脚本编译错误通常是因为Unity版本差异导致的API变化, 先在Package Manager中更新“Input System”和“TextMeshPro”到最新版,再检查脚本中是否有红色波浪线(鼠标悬停可查看错误原因,比如老版本的“FindObjectOfType()”在新版本中需加泛型约束,可改为“FindObjectOfType(typeof(GameManager)) as GameManager”)。
如何调整游戏难度?比如让方块生成更快或足球移动更灵活?
修改方块生成速度:在BlockSpawner脚本中,调整startSpawnRate(初始生成间隔,默认2秒,越小生成越快)和DecreaseSpawnRate方法里的amount值(默认每10分减少0.2秒,可改为0.3秒加快难度提升)。调整足球移动手感:在BallController脚本中,增大moveSpeed(默认10, 12-15更灵活),或修改Rigidbody组件的Drag(空气阻力,0.1-0.3之间,越小滑动越远)和Angular Drag(旋转阻力,0.3-0.5之间,避免球过度旋转)。
可以把游戏导出到手机上玩吗?需要额外做什么设置?
可以导出到手机。首先安装Unity时勾选“Android Build Support”(安卓)或“iOS Build Support”(苹果)模块(已安装可在Unity Hub→已安装版本→“添加模块”中补装)。然后在File→Build Settings中选择对应平台,点击“Switch Platform”。导出前需配置Player Settings:安卓需设置Package Name(如com.yourname.soccereatblocks)、Minimum API Level( Android 7.0及以上);iOS需设置Bundle Identifier。最后点击“Build”生成APK(安卓)或Xcode项目(iOS),安卓可直接安装APK,iOS需通过Xcode签名后安装到设备。