- Home /
Retrieve the alpha of game objects texture at cursor position
I am using the following script to place an object onto a sphere at the cursors current position. What I'm trying to do (unsuccessfully) is retrieve the alpha of one of that GameObject's textures at that same point. I've tried setting the same Texture to a Texture2D element on another script and getting the pixel information there, but the coordinates I'm sending the GetPixel function are definitely incorrect. I can't figure out how to get the correct x,y coordinates for the GetPixel function.
if(Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask)) {
// if mouse is over a sphere then place new object on sphere temporarily at the cursors current hit point
Vector3 p2 = hit.transform.position;
Vector3 p1 = hit.point;
transform.rotation = (Quaternion.LookRotation(p2 - p1, Vector3.up));
transform.position = hit.point;
GameObject curP = Camera.main.GetComponent<CameraInput>().selectedP;
print (curP.GetComponent<PScript>().alphaTexture.GetPixel (System.Convert.ToInt32 (p1.x), System.Convert.ToInt32 (p1.y)));
}
Any help would be very much appreciated.
Answer by eatsleepindie · Mar 19, 2012 at 08:25 AM
I found the answer while waiting for this question to be approved. Code is below (the 512 and 256 are the width and height of my texture, so adjust for yours).
print (curP.GetComponent<PScript>().alphaTexture.GetPixel (System.Convert.ToInt32 (hit.textureCoord.x * 512), System.Convert.ToInt32 (hit.textureCoord.y * 256)));
this prints the pixel information, and retrieving the alpha is easily done from there. Hope this helps someone out in the future.