RaycastHit.textureCoord 值的不连续性(获取正确的纹理坐标)
Discontinuity in RaycastHit.textureCoord values (getting coordinates on texture right)
您好,我正在尝试获取纹理上的特定坐标(在鼠标光标下)。所以在我执行的鼠标事件中:
Ray outRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit clickRayHit = new RaycastHit();
if (!Physics.Raycast(outRay, out clickRayHit))
{
return;
}
Vector2 textureCoordinate = clickRayHit.textureCoord;
Texture2D objectTexture = gameObject.GetComponent<Renderer>().material.mainTexture as Texture2D;
int xCord = (int)(objectTexture.width * textureCoordinate.x);
int yCord = (int)(objectTexture.height * textureCoordinate.y);
但问题是我得到的坐标不是精确地在光标下而是 "somewhat near it"。坐标并不是一直以一种方式移动,而是移动也不是随机的。它们在纹理的不同点上有不同的移动,但是:
它们保留在真实光标区域的某处
当光标在同一点上方时,坐标以相同的方式移动。
这是坐标日志的一部分:http://pastebin.ca/3029357
如果我对问题的描述不够好,我可以录制一个简短的截屏视频。
GameObject 是一个平面。
如果相关 mouseEvent 由 windows mouseHook 生成。 (具体应用)
我做错了什么?
更新: 我决定录制截屏视频 - https://youtu.be/LC71dAr_tCM?t=42。在这里您可以通过我的应用程序看到 Paint window 图像。在左下角,您可以看到 Paint 正在显示鼠标的坐标(我以我之前描述的方式获取此坐标 - 纹理上的点的位置)。因此,当我移动鼠标光标时,您可以看到坐标是如何变化的。
UPD2:
我只想再强调一次,这种转变不是恒定的或线性的。鼠标坐标周围可能有 "jumps"(但不仅是跳跃)。上面的视频解释得更好。
所以这毕竟是缩放问题。其中一个标度值是负数并导致此行为。
您好,我正在尝试获取纹理上的特定坐标(在鼠标光标下)。所以在我执行的鼠标事件中:
Ray outRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit clickRayHit = new RaycastHit();
if (!Physics.Raycast(outRay, out clickRayHit))
{
return;
}
Vector2 textureCoordinate = clickRayHit.textureCoord;
Texture2D objectTexture = gameObject.GetComponent<Renderer>().material.mainTexture as Texture2D;
int xCord = (int)(objectTexture.width * textureCoordinate.x);
int yCord = (int)(objectTexture.height * textureCoordinate.y);
但问题是我得到的坐标不是精确地在光标下而是 "somewhat near it"。坐标并不是一直以一种方式移动,而是移动也不是随机的。它们在纹理的不同点上有不同的移动,但是: 它们保留在真实光标区域的某处 当光标在同一点上方时,坐标以相同的方式移动。
这是坐标日志的一部分:http://pastebin.ca/3029357
如果我对问题的描述不够好,我可以录制一个简短的截屏视频。
GameObject 是一个平面。
如果相关 mouseEvent 由 windows mouseHook 生成。 (具体应用)
我做错了什么?
更新: 我决定录制截屏视频 - https://youtu.be/LC71dAr_tCM?t=42。在这里您可以通过我的应用程序看到 Paint window 图像。在左下角,您可以看到 Paint 正在显示鼠标的坐标(我以我之前描述的方式获取此坐标 - 纹理上的点的位置)。因此,当我移动鼠标光标时,您可以看到坐标是如何变化的。
UPD2:
我只想再强调一次,这种转变不是恒定的或线性的。鼠标坐标周围可能有 "jumps"(但不仅是跳跃)。上面的视频解释得更好。
所以这毕竟是缩放问题。其中一个标度值是负数并导致此行为。