【发布时间】: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