- 博客(18)
- 收藏
- 关注
原创 甜品消消乐 18 行列消除和同色消除的实现
if (sweet1.Type == SweetsType.RAINBOWCANDY && sweet1.CanClear() && sweet2.CanClear()){ //让彩虹糖的获取到被交换对象的Color属性 ClearColorSweet clearColor = sweet1.GetComponent<ClearColorSweet>(); if (clearColor != null) { c
2020-07-29 15:16:15
366
原创 甜品消消乐 17 彩虹糖同色消除的算法
GameManage脚本新增方法 //清除颜色的方法 参数: 当前对象的颜色 public void ClearColor(ColorSweet.ColorType color) { //遍历整个二维数组 for (int x = 0; x < xColumn; x++) { for (int y = 0; y < yRow; y++) { //
2020-07-29 15:08:58
328
原创 甜品消消乐 16 行列消除的算法
在GameManager脚本上新增两个方法,来进行行消除和列消除 //行消除 参数:当前对象的y轴坐标 public void ClearRow(int row) { //遍历得到当前行所有的甜品对象位置进行消除 for (int x = 0; x < xColumn; x++) { ClearSweet(x,row); } } //列消除 参数:当前对象的x轴坐标
2020-07-29 15:05:47
356
原创 甜品消消乐 15 清除饼干的算法
在甜品对象消除之后判断消除的甜品对象上下左右是否有饼干障碍物在GameManager上进行处理 //清除饼干 参数:被消除对象的坐标 private void ClearBarrier(int x,int y) { //x-1 x+1 左右 y-1 y+1 上下 for (int friendX = x-1; friendX <= x+1; friendX++) { //排除自身和不在
2020-07-29 14:58:39
419
原创 甜品消消乐 14 消除
using System.Collections;using System.Collections.Generic;using UnityEngine;public class ClearedSweet : MonoBehaviour { //清除的甜品动画 public AnimationClip clearAnimation; //当前对象是否在被清除 private bool isClearing; //清除的声音 public AudioCli
2020-07-29 14:40:39
233
原创 甜品消消乐 13 匹配的核心算法
直线匹配将同一类型的棋子加入行遍历列表,若最终行遍历(左,右)列表 >= 3,消除棋子。<3则进行列遍历,将同一类型的棋子加入列遍历列表。//匹配方法public List<GameSweet> MatchSweets(GameSweet sweet,int newX,int newY){ if (sweet.CanColor()) //可进行交换处理的甜品 { ColorSweet.ColorType color = sweet.ColoredCompon
2020-07-29 12:00:52
449
原创 甜品消消乐 12 甜品的位置交换
在GameSweet上进行鼠标点击事件处理 private void OnMouseEnter() { gameManager.EnterSweet(this); } private void OnMouseDown() { gameManager.PressSweet(this); } private void OnMouseUp() { gameManager.ReleaseSweet()
2020-07-29 11:28:36
196
原创 甜品消消乐 11 斜向填充的算法
在场景中生成障碍物此处需要斜向填充来解决在甜品的正下方不为空时,进行是否需要斜向填充的判断首先排除正下方情况,遍历 左下 右下两个地方然后排除对象左下或者右下不在格子范围内的情况以左下方格子为例,首先判断当前位置是否为空物体,空物体情况判断左下上面的对象是否可以移动,在不可移动的情况进行斜向移动位置操作if (sweetBelow.Type == SweetsType.EMPTY)//垂直填充{ Destroy(sweetBelow.gameObject); //删除当前位置空物
2020-07-29 11:23:08
429
原创 甜品消消乐 10 移动填充的携程
13需要一个甜品自身的移动协程,需要他自己的一个移动动画。用协程让甜品位置有一个缓动效果public class MovedSweet : MonoBehaviour { private GameSweet sweet; //这样得到其他指令的时候我们可以终止这个协程 private IEnumerator moveCoroutine; private void Awake() { sweet = GetComponent<GameSwe
2020-07-29 11:08:15
153
原创 甜品消消乐 09 填充的核心算法
填充,1.最下面的一排是不需要判断的,因为不会往下移动了,从倒数第二排开始判断,2.首先拿到位置上甜品的类型(空的或普通的),判断其当前是否可以移动,普通的可以移动3.然后遍历甜品正下方的位置是否为空,若为空则可以移动4.甜品之前的位置会变空,那会在改位置生成新的甜品5.最上面的一行如果为空的话,不能填充新的甜品,因为上面没有东西了,这时候应该要想到,在第一行那里产生负一行(用来产生元素),当判断第一行的某个位置为空时,在这个位置的正上方产生对应的甜品向下填充每一行及第一次移动都是由for (i
2020-07-29 10:47:10
409
原创 甜品消消乐 08空甜品的生成
新建一个空的甜品,复制一个预制体首先,空的甜品不需要渲染,移除渲染层是不能渲染和着色的 移除Move和Color脚本重命名为EmptySweetPrefab 拖成预制体GameManager.cs //产生甜品的方法 传参:(甜品的坐标,甜品的类型) public GameSweet CreateNewSweet(int x, int y, SweetsType type) { //chessPrefabDict[type] 字典中存储的对应类型的甜品
2020-07-29 10:43:03
220
原创 甜品消消乐 07 随机颜色的生成
可以通过当前游戏物体是否挂载有每一个脚本来判断游戏物体是否拥有此功能GameSweet.cs //获取甜品颜色的组件(脚本) private ColorSweet colordCompoment; public ColorSweet ColordCompoment { get { return colordCompoment; } } private void Awake()
2020-07-27 15:52:34
184
原创 甜品消消乐 06 甜品颜色脚本的添加
新建一个脚本ColorChess.cs来进行甜品不同类型的生成。由于 (为了实现特殊消除)。因此这里为了生成不同样式的甜品,认为生成不同颜色的甜品。public class ColorSweet : MonoBehaviour{ public enum ColorType { YELLOW, PURPLE, RED, BLUE, GREAN, PINK, ANY,
2020-07-27 15:47:29
194
原创 甜品消消乐 05 甜品移动脚本
因为不是所有的甜品都可以移动,所以需要把移动的方法分离出来,单独写一个脚本新建移动脚本并将其挂载到预制上。(1)移动算法实现:将新位置的newX赋值给sweet.X。将新位置的newY赋值给sweet.Y。更新位置:sweet .transform.position = sweet .gameManager.CorrectPosition(newX, newY);(2)在自定义基础脚本MoveSweet里面添加一些东西。在该脚本中获取甜品的移动脚本,并让其他脚本如GameManager可同过
2020-07-27 15:24:18
222
原创 甜品消消乐 04 使用自定义的甜品类
01 将脚本挂载到预制体上 (HideInInspector 隐藏在简式面板上)创建这个基础脚本的用意可以从GameManager脚本可以看出,直接获取这个脚本,方便使用这个脚本中的方法。之前是获取的游戏物体,想要使用脚本中的方法需要通过游戏物体去访问脚本,从而使用方法。原本在GameManager脚本上的声明:private GameObject[,] sweets;改为:private GameSweet[,] sweets;在GameManager脚本进行调用void Start(){
2020-07-27 15:13:08
182
原创 甜品消消乐 03甜品的生成与基础脚本的编写
(1)甜品数组// 甜品数组,使用二维存放生成的甜品,用于后续操作private GameSweet[,] sweets;(2)2层循环产生甜品void Start () { sweets = new GameObject[xColumn, yRow]; for (int x = 0; x < xColumn; x++) { for (int y = 0; y < yRow; y++) {
2020-07-27 11:50:45
294
原创 甜品消消乐 02 甜品的类型枚举、结构体、字典的创建
甜品的类型枚举,结构体,字典的创建(1)枚举类型。// 甜品对象的种类把道具相关用枚举的方式写出来 public enum ChessType { EMPTY, // 空 NORMAL, // 一般类型 BARRIER, // 障碍 ROW_CLEAR, // 行消除 COLUMN_CLEAR, // 列消
2020-07-27 11:37:19
179
原创 甜品消消乐 01游戏管理的创建,巧克力背景的生成
甜品消消乐 01游戏管理的创建,巧克力背景的生成(1)创建背景新建2D的Sprite,将图片拖给它。调整图片大小覆盖摄像机。重命名为Background。把背景的层级设置到最下方(2)游戏管理控制整个游戏的运行,甜品的产生、消除等。右键Create Empty,重命名为GameManager。然后在其身上挂一个同名的脚本。即GameManager.cs。将脚本拖到Scripts文件夹下。(3)保存场景Ctrl+S保存场景,命名为Game,将其拖到Scenes文件夹下。(4)编辑脚本双击G
2020-07-23 13:12:58
323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人