首页 > 解决方案 > 如何按位置获取平铺游戏对象?

问题描述

我是 Unity 的新手,发现了这个,所以我可以通过鼠标点击来获取网格的位置。

我想通过鼠标点击破坏一个瓷砖并将玩家移动到网格的位置。

我有 2 个问题,我不知道如何解决。

  1. 获得网格的位置后,如何获得平铺游戏对象?
  2. 当我将 player.transform.position 设置为网格的位置时,它看起来像PNG-A,但我想要的是像PNG-B,位于图块 x 位置的中心。

如果你不明白,我很抱歉,我英语不好。

标签: c#unity3d

解决方案


  1. 获得网格的位置后,如何获得平铺游戏对象?

使用Tilemap.GetInstantiatedObject

Tilemap tilemap; // Given
Vector3Int pos;  // Given
GameObject gameObjectAtPosition = tilemap.GetInstantiatedObject(pos);
  1. 当我将 player.transform.position 设置为网格的位置时,它看起来像 PNG-A,但我想要的是像 PNG-B,位于图块 x 位置的中心。

将图块宽度 ( ) 的一半添加0.5 * GridLayout.cellSize.x到您现在获得的位置的 x 上。您可以使用它Vector3.Scale来执行此操作:

GameObject person;    // Given
Vector3 tilePosition; // Given
person.transform.position = tilePosition + Vector3.Scale(new Vector3(0.5f,0f,0f), GridLayout.cellSize) ;

推荐阅读