在GameSweet上进行鼠标点击事件处理
private void OnMouseEnter()
{
gameManager.EnterSweet(this);
}
private void OnMouseDown()
{
gameManager.PressSweet(this);
}
private void OnMouseUp()
{
gameManager.ReleaseSweet();
}
在GameManager脚本上对三个事件对应的方法进行处理
//要交换的两个甜品对象
private GameSweet pressedSweet;
private GameSweet enteredSweet;
//甜品是否相邻的判断方法
private bool IsFriend(GameSweet sweet1, GameSweet sweet2)
{
//在同一X轴判断他们Y轴坐标绝对值是否相差1,同理Y轴
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; //中间变量存储sweets1的位置信息
int tempY = sweet1.Y;
//分别移动到交换的位置
sweet1.MovedComponent.Move(sweet2.X, sweet2.Y, fillTime);
sweet2.MovedComponent.Move(tempX, tempY, fillTime);
}
}
/// <summary>
/// 玩家对我们甜品操作进行拖拽处理的方法
/// </summary>
#region
public void PressSweet(GameSweet sweet)
{
if (gameOver)
{
return;
}
pressedSweet = sweet;
}
public void EnterSweet(GameSweet sweet)
{
if (gameOver)
{
return;
}
enteredSweet = sweet;
}
public void ReleaseSweet()
{
if (gameOver)
{
return;
}
if (IsFriend(pressedSweet, enteredSweet))
{
ExchangeSweets(pressedSweet, enteredSweet);
}
}