Unity2D小游戏颜色设计简单Demo和思路分享(初学者作品)
文章目录
- 前言
- 一、素材制作
- 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和思路分享(初学者作品)相关推荐
- C++/QT 贪吃蛇小游戏 界面设计
C++/QT 贪吃蛇小游戏 界面设计 前言:本文所写的贪吃蛇是笔者初学QT练手的小项目,做出来的界面较为粗糙.由于很久没有接触C++,程序中类封装的不是很规范.写这篇文章,权当是记录生活了,手动狗头. ...
- [原创]雷电小游戏app设计
[原创]雷电小游戏app设计 相信雷电是很多人的童年回忆,本文就尝试用android studio做一个简单的雷电小游戏. 游戏界面如下: 项目结构如下: 设计思路: 游戏机制设计 游戏目前的场景比较 ...
- 扫雷小游戏的设计思路以及实现的细致讲解
大家好,今天博主来介绍扫雷小游戏的设计思路以及实现,会很细致的呦,喜欢的话还请给个三连吧! 目录 设计思路 一,基础框架 二,基础框架的填充和完善 代码实现 一,初始化函数 二,埋雷函数 三,展示雷区 ...
- 50行Python代码玩转微信小游戏颜色王者
50行Python代码玩转微信小游戏"颜色王者" 游戏模式 在微信小程序里搜索"颜色王者",即可找到该游戏. 游戏的目标比拼色彩敏感度.点击图片中不一样的色块即 ...
- 微信小游戏的设计和开发
微信平台不但承载了聊天相关的基础属性,同时也有公众号的媒体属性.小程序的工具属性和支付的金融属性,是一个大而全的平台.因此越来越多的开发者基于小程序进行游戏开发,简单易用,支付方便,也是游戏开发者一个 ...
- 微信小游戏颜色风暴自动化
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 微信小游戏颜色风暴自动化 提示:以下是本篇文章正文内容,下面案例可供参考 一.环境 python opencv pyautogui 二 ...
- CocosCreator 微信小游戏云函数简单使用
转自 CocosCreator 微信小游戏云函数简单使用 - 简书 六边形站神关注IP属地: 湖南 2021.09.09 16:33:41字数 201阅读 554 后台编写云函数 首先在后台开通云开 ...
- c语言课时设计猜坐标游戏,c语言小游戏课程设计报告.docx
c语言小游戏课程设计报告 中国地质大学 本科生课程论文封面 课程名称c语言课程设计 教师姓名陈喆老师 本科生姓名周宜诺 本科生学号XX 本科生专业土地资源管理 所在院系公共管理学院 类别: 日期: 课 ...
- python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...
最新文章
- CTFshow php特性 web150
- 五十三、Java的记录日志Log4j框架的使用
- 中国大数据企业排行榜V6.0- 5 年后再去看看中几个大数据公司的发展状况
- 飞鸽传书联系企业内部管理机制
- python判断正负零_【译】格式字符串语法
- oracle in _all和any的区别,oracle经验之ANY,SOME,ALL区别
- EditPlus中有用的快捷键
- 年轻时不多闯闯,老了拿什么来吹
- 霍夫变换 文本图片倾斜矫正 python实现
- 台达触摸屏DOP-B系列——通过宏和子画面弹出提示框
- APP专项测试-弱网测试
- C语言 | 什么是ANSI C标准?
- WorldFirst如何注册?WorldFirst收款账号注册流程!
- linux kali安装应用商店
- 从一元函数极值问题理解遗传算法
- prim算法之处女作
- Boosting(一)
- JavaScript-function函数
- 计算机电路英文专业翻释术语,电子专业词汇翻译中英文对照(新手必备知识)
- 投票 Ballet Domo EVM智能合约改写