我有这个代码用于使用交换进行角色移动。该脚本位于面板 (UI) 中。
Transform player; // передаю в него объект персонажа
public void OnBeginDrag(PointerEventData eventData)
{
Vector2 delta = eventData.delta;
if (Mathf.Abs(delta.x) > Mathf.Abs(delta.y))
{
if (delta.x > 0)
{
player.transform.Translate(0.32f, 0, 0);
}
else
{
player.transform.Translate(-0.32f, 0, 0);
}
}
else
{
if (delta.y > 0)
{
player.transform.Translate(0, 0.32f, 0);
}
else
{
player.transform.Translate(0, -0.32f, 0);
}
}
}
我在地图上有对象(正如您已经注意到的,所有内容的大小都是 32x32 像素)。问题是我如何与他们发生冲突。例如,如果一个带有墙的立方体在其上方,那么在交换时,它保持静止。
提前谢谢!
您构建立方体的二维矩阵,存储 GG 索引(例如, k=5,n=6,即它位于单元格[5,6]中)。你决定你想去哪里,上或下,左或右。如果向左,则k减一,如果向上,则n加一(一般加减,取决于坐标轴的位置,我举个例子,如果倒计时来自左下角显示器的角,第一个坐标是宽度,第二个坐标是高度)。矩阵[i,j]的元素可以表示任何东西,关于那里有什么样的对象的信息、伪高度等。根据此信息,您可以确定是否可以移动到给定单元格的条件。