发布时间:2026-02-04 00:09:20 浏览次数:0
独立搭建出一个简单场景,并基于该场景开发一个简单的靠前人称3D游戏
移动并调整下各个窗口的宽高
令各个窗口摆放位置一般如下
向Unity世界发出一声HelloWorld吧,Unity世界在此刻将为你缓缓展开!
最终目标图如下:
(1)创建Cube,Sphere,Capsule,Cylinder,Quad依次排列
对象移动方式:
(2)创建Plane放在中间
(3)创建一个Text
(4)创建一颗树
都摆放好即可完成创建与移动练习!
在对Cube的Transform组件修改之前需求先练习一下如下技巧。
界面有些嘈杂,我们将其他不是Cube和初始的Camera和Light的对象删掉吧
Scene窗口纵深前进后退的方法:鼠标滚轮滚动 或 Alt+鼠标滚轮滚动,向前滚动窗口画面前进。向后滚动,窗口画面后退。
注:直接滚动,窗口视图是向中心前进。Alt+鼠标滚动则可以选择窗口视图向哪个方向前进
Scene窗口上下左右移动的方法:鼠标滚轮摁住拖拽,鼠标前移,画面向上、鼠标左移,画面向左等等,其他方向同理
Scene窗口以当前位置为旋转原点的角度旋转的方法:鼠标右键摁住拖拽,鼠标前移,画面向上旋转、鼠标左移,画面向左旋转等等,其他方向同理
Scene窗口以窗口中心位置为旋转原点的角度旋转的方法:Alt+鼠标左键摁住拖拽,鼠标前移,画面向上旋转、鼠标左移,画面向左旋转等等,其他方向同理
Scene窗口聚焦某个或某些对象在窗口中心的方法:选定目标对象/对象们,键盘按F
Transform组件是整个Unity中重要的组件之一,之后也是接触最多,且属性改变带来的视觉效果也很明显,所以对Unity组件熟悉,可以从Transform组件开始。
Poition:在坐标系中的位置
Rotation:对象旋转的角度,逆时针为正,顺时针为负
Scale:对象的大小
恭喜完成针对物体的操作课程!
在正式场景搭建前,还有一个功模块Gizmo 导航器,需要学习:
导航器位置
透视视图与正交视图
Scene窗口中的视图是透视视图还是正交视图,可以在Gizmo 导航器中设置
三视图
y轴:Top
z轴:Front
x轴:Right
在正式开始布置场景前,还需要注意:如何复制物体、光照设置、主摄像头、如何利用切换视图搭建场景
我们开始搭建场景吧,以第二个图为主,中间的亭子就用一个胶囊体代替。
将第二个图片,另存为在电脑里面
新建一个imgs的文件夹
将地图参考图 导入Unity3d项目
完成北面墙壁的效果图如下:
为了让整个墙与地面成为一个整体,可以自由缩放,旋转而不影响结构,我们需要将其制成一个prefab 预制体。
具体实现代码以及注解如下:
using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class MoveControl : MonoBehaviour { // Start is called before the first frame update //注:所有的有小数的数字后面都要加f,表示是float数据类型 public float speed = 8.0f; public float Rotatespeed = 60.0f; void Start() { Application.targetFrameRate = 60;//设置帧率为60帧率 //注:设置帧率为60帧,表示游戏会尽量把帧率往60帧靠近,不是固定60帧 } // update is called once per frame void update() { KeyControl(); } private void KeyControl() { //Translate是transform组件中自带的修改自身position属性的函数,在原有的基础上进行加处理 //Time.deltaTime :记录每帧的用时 //distance(一帧 移动距离)=speed(速度) * Time.deltaTime(一帧时间) //Translate(x,y,z,type):加的x,y,z值,由于一般设定z轴为前方,所以加z即可,Space.Self表示使用自身坐标系,这个下一章教材会讲解 if (Input.GetKey(KeyCode.W)) { this.transform.Translate(0, 0, speed * Time.deltaTime, Space.Self); //W 前进 Debug.Log(speed * Time.deltaTime); } if (Input.GetKey(KeyCode.S)) { this.transform.Translate(0, 0, -speed * Time.deltaTime, Space.Self);//S 后退 } //Rotate是transform组件中自带的修改自身属性的函数,在原有的基础上进行加处理 //逆时针为减法,顺时针加法 //y轴是top,旋转一般是人头往左或往右,所以一般我们默认以y轴为旋转轴 if (Input.GetKey(KeyCode.A)) { this.transform.Rotate(0, -Rotatespeed * Time.deltaTime, 0,Space.Self);//A逆时针旋转 } if (Input.GetKey(KeyCode.D)) { this.transform.Rotate(0, Rotatespeed * Time.deltaTime, 0, Space.Self);//A逆时针旋转 } } } 修改Speed:影响玩家的速度
修改Rotatespeed:影响玩家的旋转速度
File —> Build Settings
打开导出设置
如果你能跟着做到这里,那么恭喜!Unity成功入门了,下一节将开始更深入的各项功能与组件的使用,以及实现各类基础功能的脚本书写练习,模型导入与导出,最终实现一个使用Unity开发的星战游戏Demo!
下期预告,星战前夜!