- Home /
drawing on texture during runtime
i am working on script that is supposed to draw on object with the use of raycasting it has to work kinda like a marker would. But i have serveral issues. 1st issue : it does not draw smoothly(like demonstrated in the picture below) 2nd issue: when i draw on one object the other object with the same texture get drawn on as well.
my code:
private int Size = 10;
public GameObject marker;
void Update()
{
Vector3 markerRange = transform.TransformDirection(Vector3.forward) ;
RaycastHit hit;
//draws pixels on texture with mesh collider
if (Physics.Raycast(transform.position, markerRange ,out hit, 0.1f))
{
Renderer rend = hit.transform.GetComponent<Renderer>();
MeshCollider meshCollider = hit.collider as MeshCollider;
Texture2D tex = rend.material.mainTexture as Texture2D;
Vector2 pixelUV = hit.textureCoord;
pixelUV.x *= tex.width;
pixelUV.y *= tex.height;
//multiplies pixelsize by 10
for (int i = 0; i < Size; i++)
{
int x = (int)pixelUV.x;
int y = (int)pixelUV.y;
y += i;
x += i;
//Apply
tex.SetPixel(x, y, Color.red);
}
tex.Apply();
}
//shows range for marker
Debug.DrawRay(transform.position, markerRange, Color.blue);
}
picture of result of current code
any ideas on how to make this work or a different way to make a drawing script are welcome
knipsel.png
(379.8 kB)
Comment
Your answer
Follow this Question
Related Questions
make pencil just like the lab 0 Answers
Rotate Texture2d 1 Answer
Translate a pixel using SetPixel on a Texture2D? 1 Answer
Erasing a part of an image using SetPixel without gaps 2 Answers
SetPixel / Texture.Apply – terrible performance on iOS. 1 Answer