Unity 游戏实例开发集合 之 打砖块 休闲小游戏快速实现

目录

Unity 游戏实例开发集合 之 打砖块 休闲小游戏快速实现

一、简单介绍

二、打砖块游戏内容与操作

三、游戏代码框架

四、知识点

五、游戏效果预览

六、实现步骤

七、工程源码地址

八、延伸扩展


一、简单介绍

Unity 游戏实例开发集合,使用简单易懂的方式,讲解常见游戏的开发实现过程,方便后期类似游戏开发的借鉴和复用。本节介绍,打砖块 休闲小游戏快速实现的方法,希望能帮到你,若有不对,请留言。

二、打砖块游戏内容与操作

1、游戏开,砖块自动堆积生成

2、鼠标位置即是射击方向

3、鼠标点击左键发射球体

4、点击 Space 空格键,重新开始游戏

三、游戏代码框架

四、知识点

1、MonoBehaviour 生命周期函数:Awake,Start,Update,OnGUI

2、Input 按键的监控

3、GameObject.Instantiate 物体的生成,GameObject.Destroy 物体的销毁

4、Camera.WorldToScreenPoint 世界坐标转屏幕坐标,Camera.ScreenToWorldPoint 屏幕坐标转世界坐标

5、Rigidbody 、GetComponent<Rigidbody>().velocity 物体物理效果、物理运动

6、GUIStyle GUI样式,GUI.Label 添加文字的功能使用

7、等等

附录:Unity API 中详细介绍了unity脚本默认函数的执行顺序,点这里访问。这里主要介绍下面这张图:

五、游戏效果预览

六、实现步骤

1、打开 Unity,创建工程,导入相关资源 (相关资源获取可以从后面的工程源码获取)

2、构建场景,主要添加地面 Plane,砖块组 BrickGroup 作为生成的砖块的父物体管理和初始位置,BallGroup 作为生成球体的父物体管理

3、地面 Plane 添加材质 Stylize Tiles Diffuse

4、BrickStartPosition 的砖块初始生成位置设置为 (-5,0.5,0) ,可以根据你的实际视野自行调整

5、预制体 Brick 来源于 block_brick_brown_4_LOD2,添加 Rigidbody 刚体物理效果,和 BoxCollider 碰撞体效果

6、预制体 Brick 来源于 Soccer Ball Mesh,添加 Rigidbody 刚体物理效果,和 SphereCollider 碰撞体效果

7、BrickManager 砖块管理类,主要两个函数控制砖块的生成和销毁

8、BrickManager 砖块管理类,SpawnBricks 用来生成初始的砖块矩阵

参数说明:

/// <param name="startPost">砖块的起始位置</param>
        /// <param name="col">砖块的列数</param>
        /// <param name="row">砖块的行数</param>
        /// <param name="distance">砖块的间隔距离</param>

        /// <summary>/// 生成砖块矩阵/// </summary>/// <param name="startPost">砖块的起始位置</param>/// <param name="col">砖块的列数</param>/// <param name="row">砖块的行数</param>/// <param name="distance">砖块的间隔距离</param>public void SpawnBricks(GameObject brick,Transform parentTra,Vector3 startPost, int col,int row,float distance) {if (brick != null ){GameObject go = null;// 根据行列生成 砖块for (int i = 0; i < col; i++){for (int j = 0; j < row; j++){// 生成砖块,并且设置位置go = GameObject.Instantiate(brick, parentTra);go.transform.position = new Vector3(startPost.x+ j* distance, startPost.y+ i* distance, startPost.z);m_BricksList.Add(go);}}}}

9、BrickManager 砖块管理类,DestoryBricks 负责砖块的销毁

     /// <summary>/// 销毁砖块/// </summary>public void DestoryBricks() {if (m_BricksList!=null){// 依次销毁砖块for (int i = m_BricksList.Count-1; i >= 0; i--){GameObject.Destroy(m_BricksList[i]);}m_BricksList.Clear();}}

10、BrickManager 砖块管理类,主要两个函数控制球体的生成发射和销毁

11、BrickManager 砖块管理类,ShootBall 负责球的生成和发射

参数说明:

/// <param name="ball">球的预制体</param>
        /// <param name="parentTra">球生成的父物体</param>
        /// <param name="startPost">球生成的初始位置</param>
        /// <param name="forwardDir">球的运动方向</param>
        /// <param name="speed">球的运动速度</param>

     /// <summary>/// 生成并发射球体/// </summary>/// <param name="ball">球的预制体</param>/// <param name="parentTra">球生成的父物体</param>/// <param name="startPost">球生成的初始位置</param>/// <param name="forwardDir">球的运动方向</param>/// <param name="speed">球的运动速度</param>public void ShootBall(GameObject ball, Transform parentTra, Vector3 startPost,Vector3 forwardDir,float speed) {if (ball!=null){// 生成球体,设置初始位置,并且添加运动速度GameObject go = GameObject.Instantiate(ball, parentTra);go.transform.position = startPost;go.GetComponent<Rigidbody>().velocity = forwardDir * speed;m_BallsList.Add(go);}}

12、BrickManager 砖块管理类,ShootBall 负责球的销毁

     /// <summary>/// 销毁球体/// </summary>public void DestoryBalls() {if (m_BallsList != null){// 依次销毁球体for (int i = m_BallsList.Count - 1; i >= 0; i--){GameObject.Destroy(m_BallsList[i]);}m_BallsList.Clear();}}

13、Tools 工具类

14、Tools 工具类,函数 MousePosScreenToWorldPos 主要是把鼠标位置转为对应的世界坐标位置

参数说明:
        /// <param name="refTran">对应参照对象</param>
        /// <param name="refCamera">对应参照相机</param>
        /// <returns>鼠标的世界位置</returns>

        /// <summary>/// 把鼠标屏幕坐标转为世界坐标/// </summary>/// <param name="refTran">对应参照对象</param>/// <param name="refCamera">对应参照相机</param>/// <returns>鼠标的世界位置</returns>public static Vector3 MousePosScreenToWorldPos(Transform refTran,Camera refCamera) {//将对象坐标换成屏幕坐标Vector3 pos = refCamera.WorldToScreenPoint(refTran.position);//让鼠标的屏幕坐标与对象坐标一致Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, pos.z);//将正确的鼠标屏幕坐标换成世界坐标交给物体return refCamera.ScreenToWorldPoint(mousePos);}

15、GameStart 游戏开始类

16、GameStart 游戏开始类,Awake 和 Start 实例化一些参数,以及生产砖块矩阵

     private void Awake(){// 实例化参数m_Instance = this;m_BrickManager = new BrickManager();m_BallManager = new BallManager();m_MainCamera = Camera.main;}// Start is called before the first frame updatevoid Start(){// 生成砖块m_BrickManager.SpawnBricks(Brick,BrickParent,BrickStartPosition.position,BrickCol,BrickRow,BrickDistance);}

17、GameStart 游戏开始类,Update 中监听鼠标按下发射球体,监听 Space 空格键按下重新开始游戏

     // Update is called once per framevoid Update(){// 鼠标按下,发射球if (Input.GetMouseButtonDown(0)){// 计算当前鼠标在屏幕的位置,得到球的发射目标方向Vector3 forwardDir = (Tools.MousePosScreenToWorldPos(BrickParent,m_MainCamera)-m_MainCamera.transform.position).normalized;// 生成并发射球体m_BallManager.ShootBall(Ball, BallParent,m_MainCamera.transform.position, forwardDir, BallShootSpeed);}// 按下空格键,重新加载当前游戏if (Input.GetKeyDown(KeyCode.Space)){SceneManager.LoadScene(SceneManager.GetActiveScene().name); }}

18、GameStart 游戏开始类,OnDestroy 负责游戏结束后,自动销毁球体和砖块,OnGUI 添加对应的游戏操作说明

     // Unity 周期函数 销毁的时候调用private void OnDestroy(){m_BrickManager.DestoryBricks();m_BallManager.DestoryBalls();}// Unity 周期函数 每帧调用private void OnGUI(){// 游戏操作说明GUIStyle fontStyle = new GUIStyle();fontStyle.normal.background = null;    //设置背景填充fontStyle.normal.textColor = new Color(1, 0, 0);   //设置字体颜色fontStyle.fontSize = 40;       //字体大小GUI.Label(new Rect(10, 10, 200, 200), "操作说明:\n1、鼠标位置是球发射的目标方向;\n2、点击鼠标左键发射球体;\n3、点击空格键重新开始游戏;", fontStyle);}

19、把 GameStart 游戏开始类添加到场景中,并对应赋值

注意:可以自定义设置砖块的 行列数,以及球的 发射速度

20、运行场景,状态自动生成

21、鼠标点击发射球体, Space 空格键重新开始游戏,即可开始玩了

七、工程源码地址

github 地址:GitHub - XANkui/UnityMiniGameParadise: Unity 游戏开发集合代码集

八、延伸扩展

游戏的好不好玩,趣味性,视觉化等诸多因素影响,下面简单介绍几个方面拓展游戏的方向,仅做参考

1、可以根据自己需要动态生成不同的墙或者球体,动态墙生成的过程等

2、可以根据需要添加撞击特效,音效等

3、添加 UI 面板等,美化游戏

4、等等

Unity 游戏实例开发集合 之 打砖块 休闲小游戏快速实现相关推荐

  1. Unity 游戏实例开发集合 之 FlyPin (见缝插针) 休闲小游戏快速实现

    Unity 游戏实例开发集合 之 FlyPin (见缝插针) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 FlyPin (见缝插针) 休闲小游戏快速实现 一.简单介绍 二.FlyPin ...

  2. Unity 游戏实例开发集合 之 Circus (马戏团) 休闲小游戏快速实现

    Unity 游戏实例开发集合 之 Circus (马戏团) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 Circus (马戏团) 休闲小游戏快速实现 一.简单介绍 二.Circus ( ...

  3. Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现

    Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 CompoundBigWatermel ...

  4. Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现

    Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现 一 ...

  5. Unity 游戏实例开发集合 之 CutFruit (切水果(水果忍者)) 休闲小游戏快速实现

    Unity 游戏实例开发集合 之 CutFruit (切水果(水果忍者)) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 CutFruit (切水果(水果忍者)) 休闲小游戏快速实现 一 ...

  6. unity 打砖块—休闲小游戏,摸鱼必备(完整代码)

    打砖块小游戏通常会被当做Unity学习的第一个案例,下面给大家介绍如何实现打砖块案例的 建立cube,大体这个样子,可以建造自己喜欢的形状和颜色. 给正方形的cube添加刚体 将摄像机的位置对准创建的 ...

  7. 《游戏AI开发指南(基于Lua的人工智能在游戏中的应用)》(Yanlz+Unity+SteamVR+5G+AI+VR云游戏+Lua+人机交互+沙箱+导航+决策树+影响力地图+立钻哥哥+==)

    <游戏AI开发指南(基于Lua的人工智能在游戏中的应用)> <游戏AI开发指南(基于Lua的人工智能在游戏中的应用)> 版本 作者 参与者 完成日期 备注 YanlzAI_Lu ...

  8. 游戏出海新机遇 :卓杭游戏携手云开发和云函数,打造小游戏出海新爆款

    2021 年移动手游用户占比依旧处于领先位置,2020 年的游戏下载量达到 800 亿次,比其他各类应用整体下载量增长高出 2.5 倍.休闲类游戏大多为 2D 场景设计,无需复杂的人物模型设计.场景渲 ...

  9. Egret制作打砖块微信小游戏

    使用Egret制作微信小游戏打砖块-包括好友排行榜 项目创建与配置 项目逻辑代码 项目发布 微信小游戏的开发 项目所有代码 项目创建与配置 创建一个Egret EUI项目,默认库即可: 导入素材,在r ...

最新文章

  1. 庆祝开博第一天!呵呵!
  2. 别琢磨了,七夕礼物都给你想好了
  3. android 生成纯色,android – 以编程方式添加具有纯色和笔触的渐变
  4. 'chcp' 不是内部或外部命令,也不是可运行的程序
  5. 找不到天隆虚拟机_玩转虚拟机,教你如何装系统
  6. html网页上传到服务器_JSP+Servlet实现文件上传到服务器功能
  7. CGAN和InfoGAN理解
  8. 奥维互动地图谷歌图源,通过自建Cloudflare Workers反代实现墙内访问 - DaPeng‘s Blog
  9. 卡巴斯基正式版 送一年
  10. 数据库存储大文本类型
  11. Mybatis学习教程②
  12. android神器,android神器:tasker
  13. 锐捷(七)设备软件版本升级更新
  14. 中国云计算产业发展白皮书
  15. EMW3080固件烧录方法
  16. wxpy 建群 err_code: 1 err_msg:
  17. 项目销毁主页Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService异常
  18. 微信服务商分账功能 PHP
  19. 10个常用的数据分析商业模型之价值链分析模型(三)
  20. 鸡尾酒排序Cocktail Sort(排序算法九)

热门文章

  1. AI大类资产配置:从风险平价开始
  2. 中国大学MOOC-翁恺-C语言程序设计习题集-解答汇总
  3. 简要介绍 | 计算机视觉中的开放词汇:挑战与未来
  4. iphone新旧手机数据传输已取消_iPhone新旧手机怎样互传备忘录便签里记的东西?...
  5. 旷视张祥雨和孙剑入选中美10年AI影响力学者榜 位列榜眼
  6. AC97 标准 !!!
  7. antd select多选_antd-Checkbox多选操作
  8. RVDS4.0建立工程
  9. 腾讯云携手合作伙伴打造5G生态,覆盖“云边网端”助推“万物智联”
  10. h5全屏切换滚动页面html,H5全屏切换