C# 如何通过位置获得游戏对象的平铺?

C# 如何通过位置获得游戏对象的平铺?,c#,unity3d,C#,Unity3d,我是Unity的新手,所以我可以通过鼠标点击获得网格的位置 我想销毁一个磁贴并通过鼠标点击将玩家移动到网格的位置 我有两个问题我不知道如何解决 在我得到网格的位置后,我如何才能得到游戏对象的平铺 当我将player.transform.position设置为网格的位置时, 看起来像,但我想要的是, 位于磁贴x位置的中心 如果你不明白,我很抱歉,我的英语不好 在我得到网格的位置后,我如何才能得到游戏对象的平铺 使用Tilemap.getInstancedObject: Tilemap Tilema

我是Unity的新手,所以我可以通过鼠标点击获得网格的位置

我想销毁一个磁贴并通过鼠标点击将玩家移动到网格的位置

我有两个问题我不知道如何解决

  • 在我得到网格的位置后,我如何才能得到游戏对象的平铺
  • 当我将player.transform.position设置为网格的位置时, 看起来像,但我想要的是, 位于磁贴x位置的中心
  • 如果你不明白,我很抱歉,我的英语不好

  • 在我得到网格的位置后,我如何才能得到游戏对象的平铺
  • 使用
    Tilemap.getInstancedObject

    Tilemap Tilemap;//鉴于
    向量3int位置;//鉴于
    GameObject gameObjectAtPosition=tilemap.GetInstancedObject(pos);
    
  • 当我将player.transform.position设置为网格的位置时,它看起来像PNG-A,但我想要的是像PNG-B,位于平铺x位置的中心 将平铺宽度的一半(
    0.5*GridLayout.cellSize.x
    )添加到当前位置的x。可以使用
    Vector3.Scale
    执行此操作:

    gameobjectperson;//鉴于
    Vector3 tilePosition;//鉴于
    person.transform.position=tilePosition+Vector3.Scale(新的Vector3(0.5f、0f、0f)、GridLayout.cellSize);
    
    而我更改了1。打印(GetComponent().getInstancedObject(pos).name)?但是我得到一个错误
    对象引用没有设置为对象的实例
    ?你知道是什么导致了这个错误吗?@raxabizze这是在哪一行发生的?这意味着
    左侧的某些内容是
    null
    这也是一条建议,您应该尽可能避免在
    Update
    方法或
    Update
    中使用的方法中调用
    GetComponent
    。谢谢,非常有用。