大三狗开学,预计9月10日前完成~
甜品消消乐01_游戏基础界面 传送门
甜品消消乐02_游戏核心算法 未完
实现过程
甜甜圈相邻与交换
给甜甜圈添加Box Colliderz碰撞组件
判断甜品是否相邻
private bool IsFriend(GameSweet sweet1 , GameSweet sweet2) { return (sweet1.X == sweet2.X && Mathf.Abs(sweet1.Y-sweet2.Y)==1)||(sweet1.Y==sweet2.Y&&Mathf.Abs(sweet1.X-sweet2.X)==1); }
交换两个甜品的方法
private void ExchangeSweets(GameSweet sweet1,GameSweet sweet2) { if(sweet1.CanMove()&&sweet2.CanMove()) { sweets[sweet1.X, sweet1.Y] = sweet2; sweets[sweet2.X, sweet2.Y] = sweet1; int tempX = sweet1.X; int tempY = sweet1.Y; sweet1.MovedComponet.Move(sweet2.X, sweet2.Y, fillTime); sweet2.MovedComponet.Move(tempX, tempY, fillTime); } }
定义要交换的两个甜品
private GameSweet pressedSweet; private GameSweet enteredSweet;
注册鼠标按下事件
//鼠标点击 private void OnMouseEnter() { gameManager.EnterSweet(this); } //鼠标按下 private void OnMouseDown() { gameManager.PressSweet(this); } //鼠标抬起 private void OnMouseUp() { gameManager.ReleaseSweet(); } public void PressSweet(GameSweet sweet) { pressedSweet = sweet; } public void EnterSweet(GameSweet sweet) { enteredSweet = sweet; } public void ReleaseSweet() { if (IsFriend(pressedSweet, enteredSweet)) { ExchangeSweets(pressedSweet, enteredSweet); } }
添加清除动画