文章目录

  • 前言
  • 一、素材制作
    • 1.这边就是简单用PS到了几个基础图形
  • 二、场景搭建
    • 1.搭建目标场景
    • 2.搭建游戏场景
    • 3.添加按钮重新开始和退出游戏
  • 三、代码功能实现
    • 1. Shoot脚本,子弹射击的实现
    • 2.ButtonGreen脚本,实现点击控制子弹的射出
    • 3.通过标签实现碰撞检测和空气墙的制作
    • 4.实现游戏重新开始和通关判断

前言

写个了ColorShoot的小游戏简单Demo,主要是分享思路和巩固基础知识。


自学Unity一个月做个小游戏试试手

一、素材制作

1.这边就是简单用PS到了几个基础图形

1.三种颜色的方块
2.4种颜色的圆(主要颜色一样的话射击的时候颜色会叠加)

二、场景搭建

1.搭建目标场景

1.这边其实在PS里搭建好以后直接用一个精灵展示也是可以的,我这边是拼出来的。
2.这里目标就看关卡的需要了,我这边就随便拼了个这样的
3.基本下面的Target,RectWhit,Circle都是空物体,用于存放其他精灵子物体

2.搭建游戏场景

1.先创建一个白色方块精灵,制作为预制体,然后拖出来9个方块组成游戏场景
注意:该游戏物体需要添加2D的碰撞器组件


2.创建圆的按钮预制体,先放一个绿的和红的就可以了
注意:该游戏物体需要添加2D的碰撞器用于检测鼠标点击

3.创建子弹的预制体,用颜色较深的两个圆来做
注意:该游戏物体需要添加2D的碰撞器和刚体,同时需要勾选触发器,刚体重力调整为0

3.添加按钮重新开始和退出游戏

1.我这边选择是这种渲染模式,因为游戏场景不会超出屏幕范围


三、代码功能实现

1. Shoot脚本,子弹射击的实现


1.需要引用的空间

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

2.制作子弹的射击

    public float speed = 5;//定义一个浮点变量速度public bool isGreen;//定义一个布尔变量判断射出的子弹是绿的还是不是绿的public void ShootGreen()//声明一个射击方法,思路是子弹自动向前方匀速运动{       transform.Translate(transform.up * speed * Time.deltaTime, Space.World);              }void Update(){ShootGreen();//在Update种调用射击方法}

2.ButtonGreen脚本,实现点击控制子弹的射出

1.代码实现子弹实例化的功能

    public bool isButtonGreen;//定义一个布尔变量用于判断按钮是绿的还是不是绿的public GameObject GreenBullet;//定义一个游戏物体用于获取绿色子弹public GameObject RedBullet;//顶一个游戏物体用于获取红色子弹private void OnMouseDown()//这里用一个鼠标按下方法来判断射击的时机,按钮需要添加2D碰撞器组件,不然检测不到{       if (isButtonGreen)//当按下绿色按钮时,原地实例化一个绿色子弹{Instantiate(GreenBullet, transform.position, transform.rotation);}if (!isButtonGreen)//当按下红色按钮时,原地实例化一个红色子弹{Instantiate(RedBullet, transform.position, transform.rotation);}}

2.挂载在按钮上,然后右边三个按钮调整为Z轴旋转90度,这样根据之前Up的子弹运动代码,子弹就会从按钮上生成后向左移动,下面三个按钮不需要旋转就会往上发射子弹(然后该旋转不需要通过预制体改动,是根据按钮自身的需求进行改动)

3.通过标签实现碰撞检测和空气墙的制作

1.新添加2个标签用于判断是矩形还是空气墙

2.回到Shoot脚本,同时给所有的白色方块添加上RectWhite的标签
同时也需要给挂载Shoot脚本的子弹,指定红色方块和绿色方块,还有选择这个子弹是红色子弹还是绿色子弹

    public Sprite green;//定义一个绿色精灵用于获取绿色矩形,如果颜色矩形数量多就用数组public Sprite red;//定义一个红色个精灵用于获取红色矩形
```private void OnTriggerEnter2D(Collider2D collision)//碰撞检测{switch (collision.tag)//用标签判断碰撞的物体{case "Wall"://当子弹碰到空气墙就销毁Destroy(gameObject);break;case "RectWhite"://当子弹碰到白色方块的时候if (isGreen)//判断如果是绿色子弹则将碰撞到的方块变成绿色{collision.GetComponent<SpriteRenderer>().sprite = green;}if (!isGreen)//判断如果不是绿色子弹则将碰撞到的方块变成红色{collision.GetComponent<SpriteRenderer>().sprite = red;}break;          }

3.空气墙的制作
1.创建一个空物体,然后创建四个空物体,添加上2D碰撞器组件,并加上Wall 的标签,位置可以像我下面一样,这样子弹射到空气墙就会销毁。

4.实现游戏重新开始和通关判断

1.通关判断,在Shoot脚本里

public void Sucess_F()//胜利方法,相当于游戏种的9个方块达成与目标一样的条件,如果后续学会了更简单的方法再来改{if (GameObject.Find("RectWhite1").GetComponent<SpriteRenderer>().sprite == red&&GameObject.Find("RectWhite2").GetComponent<SpriteRenderer>().sprite == green&&GameObject.Find("RectWhite3").GetComponent<SpriteRenderer>().sprite == green&&GameObject.Find("RectWhite4").GetComponent<SpriteRenderer>().sprite == red&&GameObject.Find("RectWhite5").GetComponent<SpriteRenderer>().sprite == red&&GameObject.Find("RectWhite6").GetComponent<SpriteRenderer>().sprite == red&&GameObject.Find("RectWhite7").GetComponent<SpriteRenderer>().sprite == red&&GameObject.Find("RectWhite8").GetComponent<SpriteRenderer>().sprite == green&&GameObject.Find("RectWhite9").GetComponent<SpriteRenderer>().sprite == red){          SceneManager.LoadScene("Sucess");//切换胜利场景}}void Update(){Sucess_F();//胜利方法}

2.退出游戏和重新开始
创建新脚本Game吗,并创建一个空物体用于挂载脚本,然后将该物体指定给按钮后,选择对应的方法,退出游戏按钮也同理

public Sprite white;//定义一个精灵获取白色方块public void Button_Restart(){GameObject[] gameObject = GameObject.FindGameObjectsWithTag("RentWhite");//定义一个精灵数组用于获取所有有白色标签的方块for (int i = 0; i < gameObject.Length; i++)//用一个For循环来把所有方块换成白色方块完成初始化{gameObject[i].GetComponent<SpriteRenderer>().sprite = white;}}public void Button_OnApplicationQuit()//游戏退出方法{Application.Quit();}

3.胜利界面脚本
这边创建了第二个场景,胜利场景里面就一个按钮和一个文字
GameObject空物体用于挂载脚本,将该物体指定给按钮,然后选择到我们声明的方法,这样点击后就会返回游戏界面

public void Button_MorePlay(){Button_Restart();//重置方块颜色方法SceneManager.LoadScene("Game");//回到游戏界面}

Unity2D小游戏颜色设计简单Demo和思路分享(初学者作品)相关推荐

  1. C++/QT 贪吃蛇小游戏 界面设计

    C++/QT 贪吃蛇小游戏 界面设计 前言:本文所写的贪吃蛇是笔者初学QT练手的小项目,做出来的界面较为粗糙.由于很久没有接触C++,程序中类封装的不是很规范.写这篇文章,权当是记录生活了,手动狗头. ...

  2. [原创]雷电小游戏app设计

    [原创]雷电小游戏app设计 相信雷电是很多人的童年回忆,本文就尝试用android studio做一个简单的雷电小游戏. 游戏界面如下: 项目结构如下: 设计思路: 游戏机制设计 游戏目前的场景比较 ...

  3. 扫雷小游戏的设计思路以及实现的细致讲解

    大家好,今天博主来介绍扫雷小游戏的设计思路以及实现,会很细致的呦,喜欢的话还请给个三连吧! 目录 设计思路 一,基础框架 二,基础框架的填充和完善 代码实现 一,初始化函数 二,埋雷函数 三,展示雷区 ...

  4. 50行Python代码玩转微信小游戏颜色王者

    50行Python代码玩转微信小游戏"颜色王者" 游戏模式 在微信小程序里搜索"颜色王者",即可找到该游戏. 游戏的目标比拼色彩敏感度.点击图片中不一样的色块即 ...

  5. 微信小游戏的设计和开发

    微信平台不但承载了聊天相关的基础属性,同时也有公众号的媒体属性.小程序的工具属性和支付的金融属性,是一个大而全的平台.因此越来越多的开发者基于小程序进行游戏开发,简单易用,支付方便,也是游戏开发者一个 ...

  6. 微信小游戏颜色风暴自动化

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 微信小游戏颜色风暴自动化 提示:以下是本篇文章正文内容,下面案例可供参考 一.环境 python opencv pyautogui 二 ...

  7. CocosCreator 微信小游戏云函数简单使用

    转自  CocosCreator 微信小游戏云函数简单使用 - 简书 六边形站神关注IP属地: 湖南 2021.09.09 16:33:41字数 201阅读 554 后台编写云函数 首先在后台开通云开 ...

  8. c语言课时设计猜坐标游戏,c语言小游戏课程设计报告.docx

    c语言小游戏课程设计报告 中国地质大学 本科生课程论文封面 课程名称c语言课程设计 教师姓名陈喆老师 本科生姓名周宜诺 本科生学号XX 本科生专业土地资源管理 所在院系公共管理学院 类别: 日期: 课 ...

  9. python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

    python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...

最新文章

  1. CTFshow php特性 web150
  2. 五十三、Java的记录日志Log4j框架的使用
  3. 中国大数据企业排行榜V6.0- 5 年后再去看看中几个大数据公司的发展状况
  4. 飞鸽传书联系企业内部管理机制
  5. python判断正负零_【译】格式字符串语法
  6. oracle in _all和any的区别,oracle经验之ANY,SOME,ALL区别
  7. EditPlus中有用的快捷键
  8. 年轻时不多闯闯,老了拿什么来吹
  9. 霍夫变换 文本图片倾斜矫正 python实现
  10. 台达触摸屏DOP-B系列——通过宏和子画面弹出提示框
  11. APP专项测试-弱网测试
  12. C语言 | 什么是ANSI C标准?
  13. WorldFirst如何注册?WorldFirst收款账号注册流程!
  14. linux kali安装应用商店
  15. 从一元函数极值问题理解遗传算法
  16. prim算法之处女作
  17. Boosting(一)
  18. JavaScript-function函数
  19. 计算机电路英文专业翻释术语,电子专业词汇翻译中英文对照(新手必备知识)
  20. 投票 Ballet Domo EVM智能合约改写

热门文章

  1. 弘辽科技:猜你喜欢要怎么样入池呢?
  2. 微软正式发布Visual Studio 2013 Update 3 (2013.3) RTM
  3. EIP712 web3.py签名问题注意事项
  4. i2cGPIO补丁工具使用说明
  5. 微信分享--图片显示问题
  6. python爬虫+ffmpeg批量下载ts文件,解密合并成mp4
  7. Winform自定义控件-进度条/图片图标进度条
  8. bashrc cshrc
  9. sql模糊查询 like
  10. 菜鸟自学之——SRA Toolkit 的下载和使用