- Home /
Painting sprite in unity
I want to make prototype for cleaning windows (I mean cleaning dirty windows) in unity.
I was searching about this subject and finding that I can change pixel by Texture2D.SetPixel
.
I try to do it by this method, First I enabled read/write of texture and try this method but nothing happened on my sprite.
So I want to ask it if it's possible to change alpha of the sprite that is clicked by mouse or touched to show the below sprite of original one !?
My Code :
private RaycastHit2D hitInfo;
private SpriteRenderer spriteRendererComponent;
private Color zeroAlpha;
// Use this for initialization
void Start ()
{
spriteRendererComponent = transform.GetComponent<SpriteRenderer>();
zeroAlpha = Color.blue;
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButton(0))
{
MouseClick();
}
}
public void MouseClick()
{
Vector2 mousePosition = Vector2.zero;
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
hitInfo = Physics2D.Raycast(mousePosition, Vector2.zero);
if (hitInfo)
{
spriteRendererComponent.sprite.texture.SetPixel((int)hitInfo.point.x, (int)hitInfo.point.y, zeroAlpha);
spriteRendererComponent.sprite.texture.Apply();
}
}
I've found the solution from this topic : http://forum.unity3d.com/threads/best-easiest-way-to-change-color-of-certain-pixels-in-a-single-sprite.223030/
But now I have a problem with finding pixel on sprite. In Unity3d we have RaycastHit.textureCoord
but it doesn't exist anymore in 2D. I was searching about this problem, a lot but I didn't find anything useful.
So I want to know the solution for this problem and I'm wondering why method like textureCoord in 3D doesn't exist in 2D.
Answer by a-t-hellboy · May 09, 2015 at 09:15 AM
I've used the cursor position and size of the sprite for calculating pixel on sprite but It returned wrong value.
My code :
pixelX = (int) hitInfo.point.x / 2 * texture.width pixelY = (int) hitInfo.point.y / 2 * texture.height
Your answer
Follow this Question
Related Questions
SetPixel on a sprite texture without changing it globally 1 Answer
Erasing a part of an image using SetPixel without gaps 2 Answers
For different texture sizes, which is faster? SetPixel or SetPixels? 2 Answers
'Planet' height based, Texture2D setPixel performance queries. 1 Answer
Texture2D Power of 2 0 Answers