【问题标题】:Move game objects on the another game object Unity3D在另一个游戏对象 Unity3D 上移动游戏对象
【发布时间】:2017-12-15 01:39:05
【问题描述】:

我将这个场景与棋盘和棋子融为一体。每个图形和棋盘都是从资产商店下载的模型。所以我希望用户点击方格,点击图形,将我的图形移动到棋盘上的这个方格上。我怎样才能用我的游戏对象做到这一点?我应该定义用户单击的正方形的一些坐标吗?以及如何跟踪用户点击的位置?

我的场景是这样的:

我只有这样的脚本用于将图形移动到由我定义的正方形。一个车的例子:

void OnMouseDown()
{
    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + 71);
}

【问题讨论】:

  • 有很多方法可以实现这一点,最有帮助的可能是将棋盘设置为便于计算坐标的方式,例如让 A0 的中心位于世界原点和大小为 (1, 1) 的各个字段。然后你可以对一个对撞机或一个平面进行射线投射,并通过四舍五入到下一个整数 (Mathf.RoundToInt(float, float)) 来获取各个场坐标。 ofc 你也可以有任意大小,只是计算起来稍微复杂一点(但完全可以用非常基本的数学计算)
  • 就你的游戏循环而言,我建议你先让玩家选择要移动的棋子,然后再选择一个方块来移动它。除了这更类似于您在现实生活中下棋的方式之外,您还可以显示所选棋子的可用移动(基于其移动规则和周围的其他棋子)。
  • @Serlite 好主意!我如何建议用户可能的动作?我的意思是有办法改变正方形的颜色或照明吗?
  • @Cassie 我不熟悉您的场景设置,但是如果为正方形的材质着色不起作用,您可以尝试换掉每个相关正方形的纹理,这样它们看起来就会突出显示.

标签: unity3d chess gameobject


【解决方案1】:

您可以简单地在每个正方形上放置一个碰撞器,而不是定义一些网格或四舍五入到最接近的整数。

这些方块中的每一个都是方形碰撞层的一部分。然后你会对所有的部分做同样的事情,允许 peice 层与 square 层交互(这样它们就不会从桌子上掉下来)

接下来是最简单的部分:您只需进行两次光线投射,第一次针对碎片,以确定用户试图移动的碎片,第二次确定他们试图移动它的位置(并将碎片移动到广场中心)

This question 也可能有助于弄清楚如何选择对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 2015-04-18
    • 1970-01-01
    相关资源
    最近更新 更多