欢迎光临散文网 会员登陆 & 注册

Unity(2048)05-数字移动和合并

2023-04-09 18:49 作者:你的糖果罐子吖  | 我要投稿


对数字初始化

//使用 GetComponent<Number>() 方法获取到 gameObj 对象上的 Number 组件,并将其存储在 Number 类型的变量中。然后,调用 Init() 方法对数字对象进行初始化,传入的参数是当前数字对象所在的格子对象

  •   添加鼠标监听


给Grid使用EventTrigger组件添加鼠标按下/抬起事件 
debug出鼠标位置
点击界面后会获取鼠标坐标
创建vector3变量存储鼠标位置
接收鼠标位置
创建枚举enum存储上下左右
判断上下左右
创建CaculateMoveType方法,返回MoveType的类型
调用方法
实现创建CaculateMoveType方法,返回MoveType的类型
使用distance计算距离 解决如果鼠标不动也会有移动类型输出的情况
  • 实现MoveNumber()方法

创建MoveNumber方法 接收movetype作参数 case判断参数
按列遍历格子 输出坐标信息
遍历格子
case top

isHaveNumber()判断上方格子是否有数字和是否可以合并

  • 实现Number脚本的MoveGrid方法

移动方法

该方法首先使用 SetParent() 方法将当前游戏物体设置为目标网格的子对象,以便它随着目标网格的移动和旋转而跟随移动。接着,使用 transform.localPosition 将当前游戏物体的局部坐标设置为 (0, 0, 0),从而将它放置在目标网格的中心位置。

然后,该方法将当前游戏物体所在的网格中的数字设置为 null,表示该网格不再包含任何数字。接着,将目标网格的数字设置为当前游戏物体所在网格的数字,以更新游戏状态。最后,该方法使用 SetGrid() 方法将当前游戏物体的网格位置更新为目标网格,完成移动操作。

获取数字
移动数字
合并数字Merge方法
合并方法
  1. 遍历当前数字方块的上方格子,查找是否存在数字方块。

  2. 如果存在数字方块,判断当前数字方块的数字是否与上方数字方块的数字相等,如果相等则合并。使用 GetNumber() 方法获取上方数字方块的数字,并将其与当前数字方块的数字进行比较。如果两个数字相等,则使用 Merge() 方法将它们合并,并将当前数字方块销毁。如果两个数字不相等,则直接跳出循环,结束操作。

  3. 如果上方格子中没有数字方块,则将当前数字方块移动到上方格子中。使用 MoveToGrid() 方法将当前数字方块移动到上方格子中,从而实现数字方块的移动操作。

grids[m][j].GetNumber() 返回的是 Number 类的一个对象,而不是该对象的数字属性。然后再调用其 GetNumber() 方法获取其数字属性

实现向上移动合并数字
创建HandleNumber方法合并
调用创建HandleNumber方法合并
top方法
  1. 如果 grids[m][j] 格子中有数字对象,则将其赋值给 targetNumber

  2. 调用 HandleNumber() 方法来处理 numbertargetNumber 之间的交互,合并

  3. 如果 targetNumber 不为空,说明已经找到了一个目标格子,可以跳出循环了。

限制合并
判断是否可以合并
ReserNumberStatus方法重置设置状态
isneedcreatenumber控制是否创建数字
恢复数字状态后设置为false

完成数字合并

Unity(2048)05-数字移动和合并的评论 (共 条)

分享到微博请遵守国家法律