甜品消消乐02_游戏核心算法

大三狗开学,预计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);
        }
    }

添加清除动画

猜你喜欢

转载自www.cnblogs.com/1138720556Gary/p/9574221.html