[英]Grid Based Movement for a Block Sliding Game
https://www.gamesmen.com.au/rush-hour-traffic-jam-logic-board-game
我尝试在 Unity 中重新创建这款游戏。 我尝试制作滑块脚本,并且它有效。 假设我用网格制作它,是的,我可以在上面放置瓷砖的网格。 那么我怎样才能使块在网格上捕捉呢? 特别是如果块的长度超过 1 块?
他们的工作方式是我目前使用 OnMouseDown,因为我计划在 Android 上构建它,但现在的问题是我不知道如何使用 OnMouseUp 使这些块对齐网格。
到目前为止,这是块的代码
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;
}
我的期望是块的 pivot 检测到网格的每个图块,并在鼠标上捕捉到它
您可以将触发对撞机添加到块中。 然后为网格中的每个 position 添加一个空的 GameObject,我们称之为 SnapLocation。 然后 OnMouseButtonUp 您可以将块 position 移动到 SnapLocation 的 position。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.