Unity3d 在统一体中查找精灵上的像素

Unity3d 在统一体中查找精灵上的像素,unity3d,2d,sprite,pixel,pixels,Unity3d,2d,Sprite,Pixel,Pixels,在Unity3d中,我们有RaycastHit.textureCoord,但它在2D中不再存在。我一直在寻找这个问题,但没有发现任何有用的东西 所以我想知道这个问题的解决方案,我想知道为什么像3D中的TextureCord这样的方法在2D中不存在,实际上在RaycastHit2D中 我还想在鼠标光标停留在像素上时访问它。它在3D中工作,因为raycashit.textureCoord需要一个网格碰撞器。在2D的情况下,这是一种非常简单的方式,因为您可以自己计算位置,因为您知道精灵的命中、光标位置

在Unity3d中,我们有
RaycastHit.textureCoord
,但它在2D中不再存在。我一直在寻找这个问题,但没有发现任何有用的东西

所以我想知道这个问题的解决方案,我想知道为什么像3D中的TextureCord这样的方法在2D中不存在,实际上在
RaycastHit2D


我还想在鼠标光标停留在像素上时访问它。

它在3D中工作,因为
raycashit.textureCoord
需要一个网格碰撞器。在2D的情况下,这是一种非常简单的方式,因为您可以自己计算位置,因为您知道精灵的命中、光标位置和大小

我使用了精灵的光标位置和大小来计算精灵上的像素,但它返回了错误的值。我的代码:
pixelX=(int)hitInfo.point.x/2*texture.width pixelY=(int)hitInfo.point.y/2*texture.height
我能知道我的错在哪里吗?@ATHellboy生命点在世界空间。确定精灵的世界空间位置到生命点的增量。然后添加精灵大小的偏移量。这取决于精灵的轴心位置(很可能是中心)。我使用了以下代码:
Debug.Log((“+((int)((transform.position.x-hitInfo.point.x+transform.GetComponent().material.mainTextureOffset.x)/2*copiedTexture2D.width))+,“+((transform.position.y-hitInfo.point.y+transform.GetComponent()).material.mainTextureOffset.y)/2*copiedTexture2D.height)+“)但与返回错误像素之前一样。例如,对于500*500精灵的左上角,它返回(617,-617)