Unity基础:创建你的第一个游戏物体——Cube、Sphere与基本3D物体

Unity基础:创建你的第一个游戏物体——Cube、Sphere与基本3D物体
Unity基础创建你的第一个游戏物体——Cube、Sphere与基本3D物体大家好欢迎回到Unity教程系列。前面几篇文章我们打好了理论基础——了解了GameObject与Component的架构、掌握了编辑器六大视图的操作、熟悉了Transform组件。今天这篇文章我们要把这些理论付诸实践真正动手在Unity中创建和操作游戏物体。这篇文章的氛围和前几篇不同——理论少一些实操多一些。我会带着你一步步创建3D物体、排布场景、添加材质、制作简单的小作品。请打开Unity编辑器跟着我一起操作。动手做一遍比看十遍文章更有效。一、认识Unity内置的3D基本体1.1 什么是基本体Primitive 基本体Primitive是Unity内置的最简单的3D几何形状。它们不需要从外部导入模型直接在Unity编辑器中就能创建非常适合快速搭建场景原型Prototype和学习基本操作。Unity提供了六种3D基本体每种都有预设的网格数据1.2 Cube立方体Cube是最常用的基本体。默认创建出来的Cube边长为1单位1米包含8个顶点和12个三角形6个面每个面2个三角形。典型用途搭建场景原型墙壁、地板、平台制作简单的方块形道具作为碰撞检测的临时替身创建方式GameObject菜单 → 3D Object → Cube或在Hierarchy中右键 → 3D Object → Cube。1.3 Sphere球体Sphere默认半径为0.5单位直径为1单位。Unity的球体由经纬线网格组成默认面数较多表面看起来比较光滑。典型用途制作球、弹珠、炸弹等球形物体作为角色的简化碰撞体制作行星、水晶球等1.4 Capsule胶囊体Capsule是一个圆柱体两端各连接半个球体的形状。默认高度为2单位半径为0.5单位。胶囊体的形状天然适合角色的碰撞检测——它能很好地贴合人形角色的身体轮廓而且没有尖锐的边角在斜坡和台阶上的移动表现比Box Collider更平滑。 实际上Unity标准的第一人称和第三人称角色控制器默认都使用Capsule Collider。1.5 Cylinder圆柱体Cylinder默认高度为2单位半径为0.5单位。它是一个两端为平面的柱体。适合制作柱子、树干、桶等。1.6 Plane平面Plane是一个10×10单位的大平面由大量的网格细分组成默认10×10个顶点段。⚠️ 注意Plane不是Quad——Plane有非常多的三角形200个主要适合做地形和地面不适合做UI背景用Quad更合适。1.7 Quad四边形Quad是最简单的四边形——只有4个顶点和2个三角形。它是一个1×1单位的小平面朝向Z轴正方向也就是站立的。Quad非常适合用做2D精灵的载体或简单的背景平面。 Quad和Plane的区别很容易搞混。简单记Plane是地面水平放置、面朝上、面数多Quad是画板竖直放置、面朝前、只有2个面。二、动手创建你的第一个场景2.1 创建地面让我们从一个最简单的场景开始——一个带有地面、墙壁、和几个物体的简单场景。① 在Hierarchy中右键 → 3D Object → Plane创建一个平面。② 在Inspector中将其重命名为Ground选中后按F2或直接点击名称编辑。③ 将Position设为 (0, 0, 0)这是场景的原点位置。④ 将Scale设为 (1, 1, 1)保持默认大小。如果需要更大的地面可以把Scale改为 (2, 1, 2)。2.2 创建墙壁我们来搭建一个简单的墙体结构① 创建第一个Cube右键 → 3D Object → Cube命名为Wall_North。② 设置Wall_North的Position为 (0, 2, -5)Scale为 (10, 4, 0.5)。③ 选中Wall_North按CtrlD复制命名为Wall_South。④ 设置Wall_South的Position为 (0, 2, 5)。⑤ 创建Wall_EastPosition为 (5, 2, 0)Scale为 (0.5, 4, 10)。⑥ 创建Wall_WestPosition为 (-5, 2, 0)Scale为 (0.5, 4, 10)。现在你已经有了四面墙壁围成了一个10×10的房间。2.3 在场景中放置物体① 创建一个Sphere右键 → 3D Object → Sphere命名为Ball。② 设置Ball的Position为 (0, 1, 0)让它浮在地面上方。③ 创建一个Cylinder命名为Pillar。④ 设置Pillar的Position为 (3, 2, 3)Scale为 (1, 2, 1)。⑤ 创建两个Cube放在角落作为箱子。2.4 Scene视图导航练习在搭建场景的过程中不断练习上一篇学到的Scene视图导航按F键聚焦到某个选中的物体右键拖动旋转视角从各个角度观察你的建筑滚轮缩放查看细节中键拖动平移视角右键WASD进行飞行漫游✅ 到这个步骤你应该已经能在Scene视图中看到一个简单的小房间结构了。三、添加颜色——Material材质入门3.1 为什么需要材质你可能注意到了——所有创建的物体都是白色的默认材质。如果想让它们有不同的颜色就需要用到材质Material。这里先做一个简单的材质操作体验后续有专门的文章深入讲解。3.2 创建并应用材质① 在Project窗口中右键 → Create → Material创建一个新材质。② 命名为Mat_Red。③ 在Inspector中点击Albedo基色旁边的白色矩形。④ 在弹出的颜色选择器中选择红色关闭颜色选择器。⑤ 将材质从Project窗口拖到Scene视图中的某个物体上——物体会变成红色。⑥ 重复以上步骤创建Mat_Blue蓝色、Mat_Green绿色等不同颜色的材质。 你可以尝试修改材质的其他属性Metallic金属度0是非金属1是完全金属Smoothness光滑度0是粗糙表面1是完全镜面反射调整这两个值能明显改变物体的视觉质感3.3 给场景上色给场景中的物体赋予不同的颜色Ground地面深灰色材质四面墙壁分别赋予浅灰或不同颜色Ball球体红色Metallic设为0.5看起来像金属球Pillar柱子深棕色现在你的场景应该有模有样了。四、物体的基本操作4.1 移动物体使用Translate工具W键在Scene视图中拖拽物体拖拽红色箭头 → 沿X轴移动拖拽绿色箭头 → 沿Y轴移动上下拖拽蓝色箭头 → 沿Z轴移动拖拽两个箭头之间的方片 → 在平面上自由移动可以在Inspector中直接输入Position的精确数值来进行精确定位。4.2 旋转物体使用Rotate工具E键拖拽红色圆环 → 绕X轴旋转拖拽绿色圆环 → 绕Y轴旋转拖拽蓝色圆环 → 绕Z轴旋转按住Ctrl拖动 → 按15度增量旋转4.3 缩放物体使用Scale工具R键拖拽红色方块 → 沿X轴缩放拖拽绿色方块 → 沿Y轴缩放拖拽蓝色方块 → 沿Z轴缩放拖拽中心灰色方块 → 等比例缩放4.4 物体的选择、复制与删除操作方法单选点击物体多选Ctrl点击 或 框选拖拽复制CtrlDDuplicate删除Delete键 或 右键→Delete重命名F2键 或 点击已选中物体的名称4.5 顶点吸附与网格吸附 两个提高场景搭建精度的实用技巧顶点吸附Vertex Snapping在移动工具W键激活的状态下按住V键不放将鼠标移到物体的某个顶点上出现白色方块然后拖动到另一个物体的顶点附近两个顶点会自动对齐。这个功能在需要精确拼接墙面、地板等模块化场景时非常有用。网格吸附Grid Snapping按住Ctrl拖动 → 按世界网格的单位间隔移动在Edit Grid and Snap Settings中设置网格大小默认网格大小为1单位五、用代码控制物体5.1 创建一个控制脚本现在让我们写点代码让场景中的物体动起来。在Project窗口中创建Scripts文件夹然后在其中创建C#脚本① 右键 → Create → C# Script命名为Rotator。② 双击打开脚本在IDE中编写以下代码usingUnityEngine;publicclassRotator:MonoBehaviour{[SerializeField]privatefloatspeed30f;[SerializeField]privateVector3rotationAxisVector3.up;voidUpdate(){// 每帧绕指定轴旋转transform.Rotate(rotationAxis*speed*Time.deltaTime);}}③ 将Rotator脚本从Project窗口拖到场景中的Sphere上。④ 点击Play按钮▶观察球体旋转。⑤ 在Inspector中修改speed值比如改为100观察旋转速度的变化。⑥ 修改rotationAxis为 (1, 1, 0)观察旋转轴的变化。5.2 创建一个移动脚本创建第二个脚本OscillatorusingUnityEngine;publicclassOscillator:MonoBehaviour{[SerializeField]privatefloatamplitude2f;[SerializeField]privatefloatfrequency1f;privateVector3startPosition;voidStart(){startPositiontransform.position;}voidUpdate(){// 使用正弦波做上下往复运动floatnewYstartPosition.yMathf.Sin(Time.time*frequency)*amplitude;transform.positionnewVector3(startPosition.x,newY,startPosition.z);}}将Oscillator脚本挂载到Ball或其他物体上运行游戏观察效果。5.3 创建一个完整的控制器让我们创建一个可以用键盘控制的物体usingUnityEngine;publicclassSimpleController:MonoBehaviour{[SerializeField]privatefloatmoveSpeed5f;[SerializeField]privatefloatturnSpeed100f;voidUpdate(){// 前后左右移动floathorizontalInput.GetAxis(Horizontal);floatverticalInput.GetAxis(Vertical);Vector3movementnewVector3(horizontal,0,vertical)*moveSpeed*Time.deltaTime;transform.Translate(movement,Space.World);// 旋转if(Input.GetKey(KeyCode.Q)){transform.Rotate(Vector3.down*turnSpeed*Time.deltaTime);}if(Input.GetKey(KeyCode.E)){transform.Rotate(Vector3.up*turnSpeed*Time.deltaTime);}}}六、组织场景——使用空GameObject6.1 为什么需要组织当场景中的物体越来越多Hierarchy窗口会变得杂乱。你可以用空GameObject来组织场景结构① 创建空GameObject右键 → Create Empty命名为— WALLS —“。② 将四面墙壁拖到 — WALLS — 下成为子物体。③ 创建另一个空GameObject命名为”— PROPS —。④ 将球体、圆柱体等道具拖到 — PROPS — 下。现在Hierarchy的结构变得清晰了SampleScene ├── Main Camera ├── Directional Light ├── Ground ├── --- WALLS --- │ ├── Wall_North │ ├── Wall_South │ ├── Wall_East │ └── Wall_West ├── --- PROPS --- │ ├── Ball │ ├── Pillar │ └── Box_01 └── --- SCRIPTS ---可选挂在管理器脚本6.2 组织节点的好处Hierarchy干净整洁快速定位物体通过移动组织节点(如— WALLS —)可以批量移动整个组折叠不需要操作的分组减少视觉干扰七、完整场景挑战7.1 搭建一个小型城堡应用本文所学的全部知识试着搭建一个小型城堡场景① 用Plane做地面Scale加大② 用多个Cube搭建城墙和塔楼③ 用Cylinder做塔楼的柱子④ 用Sphere做塔楼的穹顶⑤ 用不同的颜色材质给各部分上色⑥ 用空GameObject组织各个建筑结构⑦ 创建几个脚本让某些部分动起来旋转的旗帜、上下浮动的魔法球等7.2 检查清单完成挑战后对照以下列表检查场景中至少有10个不同的GameObject使用了至少3种不同的基本体创建并应用了至少5种不同的材质颜色Hierarchy中有清晰的分组结构至少有一个物体挂载了自定义脚本点击Play后场景有动态效果八、本篇总结✅ 本文核心知识点回顾Unity提供六种3D基本体Cube、Sphere、Capsule、Cylinder、Plane、Quad使用Transform工具W/E/R操作物体的位置、旋转和缩放Material材质决定物体的外观颜色和质感Scrip脚本挂载到GameObject上赋予其动态行为空GameObject是组织场景结构的重要工具CtrlD复制、Delete删除、F2重命名是最常用的编辑操作顶点吸附V键和网格吸附Ctrl提高场景搭建精度 从下一篇文章开始我们将深入学习材质与纹理系统——让游戏中的物体不仅有不同的颜色还能有逼真的纹理贴图和表面细节。动手任务完成本文第七节的小型城堡挑战搭建你自己的场景作品关于作者拥有多年Unity开发经验的游戏开发者专注Unity系统化教学与最佳实践分享。欢迎在评论区交流讨论