如何按位置获取图块gameObject?

时间:2018-10-31 16:18:13

标签: c# unity3d

我是Unity新手,并且找到了this,因此我可以通过单击鼠标来获取网格的位置。

我想破坏瓷砖并通过单击鼠标将播放器移动到网格位置。

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

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

如果您听不懂,对不起,我的英语不好。

1 个答案:

答案 0 :(得分:1)

 
  
      
  1. 获得网格的位置后,如何获得图块gameObject?
  2.   

使用Tilemap.GetInstantiatedObject

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

将图块宽度(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) ;