unity小球吃方块开发过程

  • 你将学会用unity开发小游戏的基础知识
  • 吃方块游戏超详细全教程,保姆式教学包你学会
  • 一、创建对象
    • 创建PlayBall小球吃金币游戏项目,创建地面和小球。
  • 二、添加脚本
    • 创建脚本使小球动起来,并用键盘控制小球的运动。
  • 三、控制相机跟随
    • 控制相机跟随小球移动。
  • 四、旋转对象
    • 控制小球移动范围并加入可旋转的金币。
  • 五、碰撞检测
    • 实现小球吃掉金币效果。
  • 六、显示文本
    • 在小球吃掉金币时显示分数以及吃光所有金币后显示胜利。
  • 七、发布程序
    • 发布PlayBall的Windows程序并运行该程序。
  • 八、Unity 3D的各个菜单栏以及它们所包含的下拉菜单及其译名

你将学会用unity开发小游戏的基础知识

通过创建对象、添加脚本、控制相机跟随、旋转对象、碰撞检测、显示文本和发布程序七个实验来对Unity 3D游戏开发过程中的场景、Plane、Sphere、Cube对象、脚本、碰撞检测、UI以及程序发布等问题进行学习和练习。在博客文末最后列出了Unity 3D的各个菜单栏以及它们所包含的下拉菜单及其译名。

吃方块游戏超详细全教程,保姆式教学包你学会

一、创建对象

知识点:
1.掌握在Unity 3D中创建项目、场景、Plane和Sphere等。
2.掌握在Unity 3D中材质的应用。

学会在Unity 3D中创建项目、场景、Plane和Sphere,学会材质的应用。
实验内容

创建PlayBall小球吃金币游戏项目,创建地面和小球。

操作步骤:
1)新建项目,依次输入项目名称,选择项目存储路径,如图2-1所示。

2)点击“Create project”创建项目进入Unity 3D界面,右上角“Layout”可修改布局,Unity 3D有多种布局,读者可以根据自己的习惯选择,下图为“Layout”|“Tall”布局,本实验截图均为Tall布局,如图2-2所示。

3)在“Project”窗口中新建文件夹Scenes,存储游戏场景,按“Ctrl+S”存储当前游戏场景main,如图2-3所示。

4)在“Hierarchy”窗口中创建游戏地面,右键选择“3DObject”|“Plane”,因为其为游戏地面,将其命名为Ground,如图2-4所示。

5)选中Ground对象,在“Inspector”窗口的“Transform”右侧的齿轮选择“Reset”,将地面对象放置在坐标系原点,

6)若想修改该地面对象表面颜色,需要为其添加材质。在“Project”窗口中新建文件夹名为Materials,存储材质,在Materials文件夹中新建“Material”材质文件,

7)将“Material”命名为Ground,选中Ground材质,在“Inspector”窗口中修改“Albedo”颜色为淡蓝色,

8)将该材质与Plane进行关联,将Ground材质用鼠标左键拖动到“Hierarchy”窗口中的Ground对象上

9)在“Hierarchy”窗口创建游戏主角小球对象,右键选择“3D Object”|“Sphere”,并将其命名为Player,

10)将小球对象放置在坐标系原点,选中小球Player对象,在“Inspector”窗口的“Transform”右侧的齿轮选择“Reset”

11)选择移动按钮,,向上拖动“y”轴绿色箭头,将小球拖到地面上方

12)点击播放按钮查看游戏运行效果,

13)为小球添加重力。在“Hierarchy”窗口选择小球Player对象,在“Inspector”窗口点击最小面的“Add component”添加组件按钮,添加“Rigidbody”刚体组件,

14)点击播放按钮查看与没加刚体组件时的区别

二、添加脚本

实验目的
1.掌握在Unity 3D中创建脚本的方法。
2.掌握在Unity 3D中修改对象的属性。
实验要求
学会在Unity 3D中创建脚本以及修改对象的属性。
实验内容

创建脚本使小球动起来,并用键盘控制小球的运动。

操作步骤:
1)为使小球运动起来,要为小球对象添加脚本文件。在“Project”窗口中新建文件夹Scripts,存储脚本文件,在“Hierarchy”窗口选择小球Player对象,在“Inspector”窗口点击最下面的“Add component”添加组件按钮,输入Player,选择“New Script”,Language选择默认的“C Shape”,点击“Creat and Add”创建脚本文件

2)将Player脚本文件拖入到Scripts文件夹中,

3)双击player脚本文件,进入编辑器,本例进入的是Microsoft Visual Studio编辑器,

4)为使小球运动起来,需要先得到小球刚体,并对刚体施加一个方向的力,具体代码如下:

using UnityEngine;
using System.Collections;
public class player : MonoBehaviour {private Rigidbody rd;    //定义刚体对象// Use this for initializationvoid Start () {rd = GetComponent<Rigidbody>();   //取得小球的刚体}// Update is called once per framevoid Update () {rd.AddForce(new Vector3(1, 0, 0));  //对小球刚体施加一个单位X轴正向的力}}

5)点击播放,查看小球运动状态,如图所示。

6)将上例中的Vector3(1, 0, 0)修改为Vector3(-1, 0, 0)播放查看运动效果,或者修改为Vector3(0, 0, 1)和Vector3(0, 0, -1)分别查看效果。

7)用键盘控制小球的移动,需要先取得输入,再通过输入控制小球的移动,修改Update代码:

Void Update () {float h = Input.GetAxis("Horizontal");//取得键盘的水平输入rd.AddForce(new Vector3(h, 0, 0));}

8)点击播放,试着按键盘的左右方向或者“A”“D”键控制小球的水平方向移动,修改Update代码,实现控制小球四个方向的移动

void Update () {float h = Input.GetAxis("Horizontal");  //取得键盘的水平输入
float v = Input.GetAxis("Vertical");    //取得键盘的垂直输入
rd.AddForce(new Vector3(h, 0, v) * 5);
}

9)至此可以用键盘实现对小球的方向控制,若果想使小球运动的更快,可以对施加的力乘上系数,代码如下:
rd.AddForce(new Vector3(h, 0, v) * 10); //对施加的力乘以系数
10)也可将力的系数设为公共变量,这样随时可以在Unity 3D页面修改系数的值,代码如下:

using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {private Rigidbody rd;
public int force = 5;    //定义公共变量force,为施加力的系数// Use this for initializationvoid Start () {rd = GetComponent<Rigidbody>();}// Update is called once per framevoid Update () {float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");rd.AddForce(new Vector3(h, 0, v) * force);   //对施加的力乘以系数}
}

11)设置公共变量之后,在Player对象的“Inspector”窗口可以看到,player脚本中多了Force值,这样随时可以在Unity 3D页面修改力的系数值,

12)增大游戏地面面积。在“Hierarchy”窗口选择Ground对象,在“Inspector”窗口的“Transform”中修改“Scale”值,将X、Z都修改为2,

三、控制相机跟随

实验目的
1.掌握在Unity 3D中移动和选择对象等操作。
2.了解在Unity 3D中控制相机跟随的方法。
实验要求
学会在Unity 3D中移动和选择对象等操作及了解控制相机跟随的方法。
实验内容

控制相机跟随小球移动。

操作步骤:
1)点击移动按钮,选择相机对象,向上拖动“Y”轴,将其拖动到稍高一点的位置,每次调整相机时,在右下角会出现相机预览图,以便观察其视野,

2)点击旋转按钮,旋转相机角度,使其面向小球

3)若想相机跟随小球运动,需要为相机添加脚本。在“Hierarchy”窗口选择“Main Camera”对象,在“Inspector”窗口点击最小面的“Add component”添加组件按钮,输入follow,选择“New Script”,选择默认的“C Shape”语言,点击“Creat and Add”创建脚本文件,

4)将follow脚本拖入到Scripts文件夹中。若想相机跟随小球运动,需要相机与小球的距离保持不变。首先,在follow脚本中要取得小球的位置信息。代码如下:

using UnityEngine;
using System.Collections;
public class follow : MonoBehaviour {public Transform playerTransform;   //定义公共变量记录小球的位置信息// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}
}

5)公共变量定义好后,在“Main Camera”对象的“Inspector”窗口可以看到,follow脚本中多了playerTransform,将“Hierarchy”窗口中的小球Player对象拖到playerTransform上,使playerTransform绑定小球的位置信息

6)取得小球的位置信息后,添加代码实现相机跟随小球移动,代码如下:

using UnityEngine;
using System.Collections;
public class follow : MonoBehaviour {public Transform playerTransform;   //定义公共变量记录小球的位置信息
private Vector3 offset;    //定义相机和小球之前的距离// Use this for initializationvoid Start () {offset = transform.position - playerTransform.position;    //计算相机和小球之间距离}// Update is called once per framevoid Update () {transform.position = playerTransform.position + offset;  //保持距离}
}

四、旋转对象

实验目的
1.掌握在Unity 3D中创建cube对象。
2.了解在Unity 3D中旋转对象的方法。
实验要求
学会在Unity 3D中创建cube对象并了解旋转对象的方法。
实验内容

控制小球移动范围并加入可旋转的金币。

操作步骤:
1)创建地面边界墙,在“Hierarchy”窗口创建cube对象,右键选择“3D Object”|“Cube”,选中cube对象,在“Inspector”窗口的“Transform”中修改“Position”的X、Y、Z为0,0,10,“Scale”的X、Y、Z为20,2,1,如图2-25所示。

2)在“Hierarchy”窗口选中cube对象,按“Ctrl+D”复制cube对象,分别创建其他三面墙体,三面墙体的“Transform”参数分别为(PositionX、Y、Z为0,0,-10,ScaleX、Y、Z为20,2,1)、(PositionX、Y、Z为10,0,0,ScaleX、Y、Z为1,2,20)、(PositionX、Y、Z为-10,0,0,ScaleX、Y、Z为1,2,20),

3)在“Hierarchy”窗口中,将创建好的四个cube墙体对象拖动到Ground对象上,形成父子关系

4)创建可收集的金币。在“Hierarchy”窗口新建cube对象,命名为Pickup,选中cube对象,在“Inspector”窗口的“Transform”中修改“Rotation”的X、Y、Z为45,45,45,“Scale”的X、Y、Z为0.5,0.5,0.5,

5)点击Local按钮,切换成全局坐标系,调整该cube对象的高度,使其立在地面上

6)在Materials文件夹中新建Material,将Material命名为Pickup,选中Pickup材质,在“Inspector”窗口中修改“Albedo”颜色为金色,并将该材质与Pickup对象关联

7)因为还要创建很多个Pickup对象,所以把Pickup对象做成预制体,在“Project”窗口中新建文件夹Prefabs,存储预制体,将“Hierarchy”窗口中的Pickup对象用鼠标左键拖动到该文件夹内

8)将Prefabs文件夹中的Pickup对象拖入到左侧的舞台上,调整高度,使其立于地面上,选中Pickup对象,并按“Ctrl+D”复制多个,调整位置,如图2-32所示。

9)在“Hierarchy”窗口中,创建空的游戏物体“Create Empty”,并将该游戏物体放到原点,将所有的Pickup放到该物体上

10)为了使所有的Pickup都旋转,选择“Project”窗口下Prefabs文件夹中的Pickup,在“Inspector”窗口点击最小面的“Add component”添加组件按钮,输入pickup,选择“New Script”,选择默认的“C Shape”语言,点击“Creat and Add”创建脚本文件,并将该脚本放在Scripts文件夹下

11)双击进入该脚本,添加如下代码,使金币旋转起来。

using UnityEngine;
using System.Collections;
public class pickup : MonoBehaviour {// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {transform.Rotate(new Vector3(0, 1, 0));  //使对象绕y轴旋转}
}

12)点击播放,游戏运行如图下图所示。

五、碰撞检测

实验目的
1.掌握在Unity 3D中为对象设置标签。
2.了解在Unity 3D中碰撞检测的方法。
实验要求
学会在Unity 3D中为对象设置标签以及了解碰撞检测的方法。
实验内容

实现小球吃掉金币效果。

操作步骤:
1)为了检测小球碰撞到金币还是墙体,为金币Pickup对象设置标签,选择“Project”窗口下Prefabs文件夹中的Pickup,在“Inspector”窗口“tag”下拉菜单中选择“Add Tag”

2)进入如图界面。

图2-37 Add Tag界面
3)点击“+”,添加标签Pickup

4)再次选择“Project”窗口下Prefabs文件夹中的Pickup,在“Inspector”窗口“tag”下拉菜单中选择Pickup

5)为了实现小球碰撞金币使金币消失,打开Player脚本,修改代码如下:

using UnityEngine;
using System.Collections;
public class player : MonoBehaviour {private Rigidbody rd;
public int force = 5;// Use this for initializationvoid Start () {rd = GetComponent<Rigidbody>();}// Update is called once per framevoid Update () {float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");rd.AddForce(new Vector3(h, 0, v) * force);}
void OnCollisionEnter(Collision collision) {//碰撞检测函数
if(collision.collider.tag == "Pickup") {//判断小球是否碰到金币Destroy(collision.collider.gameObject);   //使金币消失}
}

}
6)运行游戏效果如图下图所示。

7)游戏运行后发现,在碰撞金币使金币消失时,会有撞到物体的反弹效果,如果不想要这种效果,首先选择“Project”窗口下Prefabs文件夹中的Pickup,在“Inspector”窗口“Box Collider”中,勾选“Is Trigger”

8)修改Player脚本如下:

using UnityEngine;
using System.Collections;
public class player : MonoBehaviour {private Rigidbody rd;
public int force = 5;// Use this for initializationvoid Start () {rd = GetComponent<Rigidbody>();}// Update is called once per framevoid Update () {float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");rd.AddForce(new Vector3(h, 0, v) * force);}
void OnTriggerEnter(Collider collider)    //检测接触{if(collider.tag == "Pickup"){Destroy(collider.gameObject);}
}
}

六、显示文本

实验目的
1.了解在Unity 3D中UI的使用方法。
实验要求
了解在Unity 3D中UI中Text控件的使用方法。
实验内容

在小球吃掉金币时显示分数以及吃光所有金币后显示胜利。

操作步骤:
1)如果想在小球吃掉金币时加分,并实时显示分数,修改Player代码如下:

using UnityEngine;
using System.Collections;
public classplayer : MonoBehaviour {private Rigidbody rd;
public int force = 5;
private int score = 0;   //定义分数变量// Use this for initializationvoid Start () {rd = GetComponent<Rigidbody>();}// Update is called once per framevoid Update () {float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");rd.AddForce(new Vector3(h, 0, v) * force);}
void OnTriggerEnter(Collider collider){if(collider.tag == "Pickup"){score++;      //每次接触金币对分数加1Destroy(collider.gameObject);}
}
}

2)若想在游戏时显示分数,需要加入UI,在“Hierarchy”窗口中,右键“UI”|“Text”,切换到2D显示

3)选择Text对象,在“Inspector”窗口“Rect Transform”中,点击左侧方框,按住“Alt”键,选择左上角的方框

4)调整Text位置,将其向右下稍微调整,游戏运行,效果如图所示。

5)为了在Text对象中显示分数,需要将Text对象与Player脚本关联,修改Player脚本代码如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class player : MonoBehaviour {private Rigidbody rd;
public int force = 5;
public Text text;      //定义Text公共变量,准备关联Text对象
private int score = 0;// Use this for initializationvoid Start () {rd = GetComponent<Rigidbody>();}// Update is called once per framevoid Update () {float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");rd.AddForce(new Vector3(h, 0, v) * force);}
void OnTriggerEnter(Collider collider){if(collider.tag == "Pickup"){score++;Destroy(collider.gameObject);}
}
}

6)在Player对象的脚本中会出现Text,将Text对象拖入到Text后面的框中

7)通过拖动已经在Player中取得了Text对象,然后将分数传递给Text,修改Player代码如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class player : MonoBehaviour {private Rigidbody rd;
public int force = 5;
public Text text;
private int score = 0;// Use this for initializationvoid Start () {rd = GetComponent<Rigidbody>();}// Update is called once per framevoid Update () {float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");rd.AddForce(new Vector3(h, 0, v) * force);}
void OnTriggerEnter(Collider collider){if(collider.tag == "Pickup"){score++;text.text = score.ToString();   //将分数赋值给TextDestroy(collider.gameObject);}
}
}

8)运行游戏,效果如图2所示。

9)当把所有金币都吃掉后,显示游戏胜利。在“Hierarchy”窗口中,在“Canvas”上右键“UI”|“Text”,再创建一个Text用来显示胜利信息

10)选择调整按钮
调整Text(1)对象的大小,在Text(Script)中修改Text(1)的一些属性

11)在“Inspector”窗口中取消Text(1)前面的对号,使其在游戏刚开始运行时不显示,

图2-49 在Inspector中取消Text(1)前面的对号
12)用同样的方法关联Player和Text(1)对象,并修改Player脚本的代码如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class player : MonoBehaviour {private Rigidbody rd;
public int force = 5;
public Text text;
private int score = 0;
public GameObject winText;   //定义存放胜利消息的Text// Use this for initializationvoid Start () {rd = GetComponent<Rigidbody>();}// Update is called once per framevoid Update () {float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");rd.AddForce(newVector3(h, 0, v) * force);}
void OnTriggerEnter(Collider collider){if(collider.tag == "Pickup"){score++;text.text = score.ToString();
if(score == 12){winText.SetActive(true);  //如果全部金币(本例为12个)全部吃完,显示胜利消息}Destroy(collider.gameObject);}}}

13)在Player对象的脚本窗口中会出现winText,将Text(1)对象拖入到winText后面的框中,

图2-50 Player对象的脚本窗口
14)运行游戏,当吃光所有金币后效果如图所示。

七、发布程序

实验目的
1.掌握在Unity 3D中发布程序的方法。
实验要求
掌握在Unity 3D中发布程序的方法以及运行发布后的程序。
实验内容

发布PlayBall的Windows程序并运行该程序。

操作步骤:
1)发布windows平台的exe游戏,点击“File”|“Build Setting”

2)选择“PC,Mac&Linux…”,选择“TargetPlatform”|“Windows”,“Architecture”中x86为32位操作系统应用程序,x64为64位应用程序,根据实际情况选择即可,点击“Build”即可发布程序。
3)运行exe文件运行游戏

图2-53 游戏运行开始界面
4)勾选Windows,点击“Play”运行游戏

八、Unity 3D的各个菜单栏以及它们所包含的下拉菜单及其译名

主菜单 包含的子菜单






unity学习开发小球吃方块小游戏(从制作到发布程序,超详细全教程包你学会)相关推荐

  1. unity小球吃金币小游戏

    链接放在这里 unity小球吃金币小游戏-Unity3D文档类资源-CSDN下载这是我在学完虚拟现实技术这门课程后利用unity所做的小球吃金币小游戏,里面有源码和作品源文件,用u更多下载资源.学习资 ...

  2. CocosCreator像素鸟小游戏实现(有源码)超详细教程 TS实现小游戏 零基础开发

    CocosCreator像素鸟小游戏实现(有源码)超详细教程 TS实现小游戏 大家中秋国庆快乐哈 前言 老规矩先看效果 源码的获取方式在最下面 对于本游戏来说canvas这样设置最佳哦 游戏实现思路: ...

  3. Unity学习制作Flappy Bird小游戏(超详细全教程,可发布到PC、Web、Android平台)

    本文中Flappy Bird基于Unity2019.4.7f1完成,源工程已部分代码改为适配安卓 flappy bird:一夜爆红的胖鸟 这是一款简单又困难的手机游戏,游戏中玩家必须控制一只胖乎乎的小 ...

  4. 学习完美方块小游戏(cocos creator)

    学习完美方块小游戏 通过学习完美方块小游戏,了解缓动系统(cc.tween)的简单运用 [游戏效果图] [游戏玩法]:玩家通过长按屏幕,使方块放大到一定的大小后下落,如果被基座接住算是过关,掉落或者被 ...

  5. 基于JavaSwing开发吃豆子小游戏 课程设计 大作业源码

    基于JavaSwing开发吃豆子小游戏:   (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse/Eclipse/idea+Jdk 运行效果图: 基于JavaSwing开发 ...

  6. 视频教程-Layabox3D游戏开发入门-微信3D小游戏案例 -微信开发

    Layabox3D游戏开发入门-微信3D小游戏案例 有多年Unity程序开发经验,有策划和美术设计的经验.愿意在csdn这个平台和大家一起分享! 金龙 ¥29.00 立即订阅 扫码下载「CSDN程序员 ...

  7. html小游戏代码_研发实践:Mozilla分享如何开发一款WebVR小游戏

    文章相关引用及参考:mozvr 本文来自Mozilla的Josh Marinacci (映维网 2019年02月06日)在倡导新技术时,我总是尝试采用现实世界开发者的方式,而对于WebVR,开发一款游 ...

  8. ***JAVA*和*Eclipse*开发一个换装小游戏**

    JAVA和Eclipse开发一个换装小游戏** 家有一女如有一宝,最近女朋友的少女心有点爆棚,作为一个计算机专业的人,我的情商简直是低到吓人,但是我还是想到了,亲自给女朋友做一个换装的小游戏,来满足女 ...

  9. Python 开发接豆人小游戏 TurnipBit

    Python 开发接豆人小游戏 TurnipBit 最近入手了一款MicroPython的开发板-TurnipBit,这个板子比较适合单片机入门,以及青少年编程,因为它有配备的在线图形编程. 官网地址 ...

最新文章

  1. ios ble 参考
  2. php 解析配置文件,php 解析ini配置文件
  3. http header 设置编码_【译】http.client
  4. 检测IP地址的正则表达式
  5. ASP.NET设置发帖时间间隔不超过30秒
  6. leetcode 349. Intersection of Two Arrays 1
  7. 图片支持滚轮缩放(缩放中心为鼠标位置)_JS实现图片缩放、拖动、剪裁、预览及保存效果...
  8. 用Navicat for MySQL往数据表中添加数据时汉字出现乱码
  9. 三凌PLC源码,STM32F205VCT6主控PLC控制器板,已批量生产
  10. CAD梦想画图中的“缩放命令”
  11. 2021年中国宽带接入情况、用户规模及使用情况分析[图]
  12. 要成为职业摄影师 你必须知道的10个真相
  13. 【临床预测模型】----选择合适的统计模型
  14. 网页设计作业——小米商城官网首页(1页) HTML+CSS+JavaScript web期末作业设计网页_清新淡雅个人网页大学生网页设计作业成品
  15. domcer服务器按键显示怎么调,我的世界domcer怎么打开按键显示_我的世界按键大全...
  16. 更适合手写的办公本,办公参会时的效率神器,MAXHUB领效M6 Pro上手
  17. 【主成分分析】PCA降维算法及Matlab代码实现
  18. Python 获取目录下的文件列表,并自然排序
  19. 多益网络2019秋招笔试题
  20. matlab中br是什么意思,Matlab中有关 firstbr    non-singleton dimension.解释

热门文章

  1. 计算机等级考试 公共基础知识资料
  2. flex基本通信方式比较及BlazeDS和LCDS比较
  3. NAO团队任务——运动控制(1)
  4. “2020区块链技术应用及专业教育论坛“在苏州2.5产业园隆重举办
  5. oracle 都是parallel惹的祸【1-2分钟出结果变1-2秒】
  6. 文件夹加锁王 2007 v6.47 企业版 绿色
  7. 2022-2028年中国光纤放大器行业投资机会分析及市场前景趋势报告
  8. 用牛顿迭代公式求 x 的立方根(c语言)
  9. 计算机密码应用基础试题及答案,计算机应用基础试题及参考答案.doc
  10. 如何安装使用EmEditor?