C# 基于网格的方块滑动游戏运动
有一个游戏,我试图在统一中重现它。我试着制作滑动块脚本,它很有效。让我们说,我用一个网格,是的,那个网格,我可以把瓷砖放在上面。那么如何在网格上创建块捕捉呢?特别是如果块的长度超过1个瓷砖 它们的工作原理是,我现在使用OnMouseDown,因为我计划在Android上构建它,但现在的问题是,我不知道如何使用OnMouseDown使这些块与网格对齐 到目前为止,这是块的代码C# 基于网格的方块滑动游戏运动,c#,unity3d,grid,C#,Unity3d,Grid,有一个游戏,我试图在统一中重现它。我试着制作滑动块脚本,它很有效。让我们说,我用一个网格,是的,那个网格,我可以把瓷砖放在上面。那么如何在网格上创建块捕捉呢?特别是如果块的长度超过1个瓷砖 它们的工作原理是,我现在使用OnMouseDown,因为我计划在Android上构建它,但现在的问题是,我不知道如何使用OnMouseDown使这些块与网格对齐 到目前为止,这是块的代码 private void GrabABlock() { if (Input.GetMouseBut
private void GrabABlock()
{
if (Input.GetMouseButton(0)) {
Debug.Log("blockGrab");
mousePos = Input.mousePosition;
mousePos = Camera.main.ScreenToWorldPoint(mousePos);
BlockPosX = mousePos.x - this.transform.position.x;
BlockPosY = mousePos.y - this.transform.position.y;
Grabbed = true;
if (Grabbed == true) {
mousePos = Input.mousePosition;
mousePos = Camera.main.ScreenToWorldPoint(mousePos);
switch (BlockDirection)
{
case BlockShape.Horizontal:
HorizontalMovement();
break;
case BlockShape.Vertical:
VerticalMovement();
break;
case BlockShape.Square:
OctaMovement();
break;
}
}
}
}
private void LateUpdate() // Snap to Grid
{
mousePos.x = Mathf.Floor(gameObject.transform.position.x / 1f) * 1f;
mousePos.y = Mathf.Floor(gameObject.transform.position.y / 1f) * 1f;
pivot.transform.position = mousePos;
}
我的期望是块的轴检测网格的每个分片,并在MouseUp上捕捉到它。您可以向块添加触发器碰撞器。然后为网格中的每个位置添加一个空的游戏对象,我们称之为SnapLocation。然后在MouseButtonup上,您可以将块位置移动到SnapLocation的位置。您使用的是基本网格还是网格布局组?我说的只是手动创建空游戏对象的列和行。使用触发器碰撞器查看您当前正在触摸的游戏对象,然后OnMouseUp将设置gameObject.transform.position=SnapLocation.transform.position。