- Home /
Define pixels
Hello!
I want to define pixels in a sprite. So that i can for example detect which pixels are black and which are white.
I have made a script which calculates the dimension of the sprite in pixels. With it i can use the sprite as a matrix. What i need help with is to make for loops which detects the color (or shade) of each individual pixel. The sprite used will only be black and white so i only need to detect where on the greyscale the pixel is.
This is what i have:
using UnityEngine;
using System.Collections;
public class Findwhite : MonoBehaviour {
public float imgHeight;
public float imgWidth;
//public SpriteRenderer imageSprite;
void Start () {
GameObject image = GameObject.Find ("text");
SpriteRenderer imageSprite = image.GetComponent<SpriteRenderer> ();
imgWidth = imageSprite.bounds.size.x*100;
imgHeight = imageSprite.bounds.size.y*100;
}
}
I am thinking that the for-loops might look something like this:
void Update () {
for(int i = 0; i < imgWidth; i++){
for(int j = 0; j < imgHeight; j++){
if(img[i][j].color == black (or dark greyish)) //psuedo
{
store img[i][j] //psuedo
}
}
}
}
Do you have any suggestion how to make the Psuedo-code work?
Thank you
//Taegos
Answer by Tageos · Aug 24, 2015 at 10:30 PM
I found a nice tutorial on utube about a similiar thing. I tweaked it a little and now it works like a want.
using UnityEngine;
using System.Collections;
public class CreateBlocks : MonoBehaviour {
public Texture2D heightmap;
private Color color;
public int w;
public Color[] pixels;
void Start () {
pixels = heightmap.GetPixels (0, 0, heightmap.width, heightmap.height);
for (int x = 0; x < heightmap.width; x++){
for (int y = 0; y < heightmap.height; y++){
color = pixels[(y * heightmap.height)+x];
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj.transform.position = new Vector3 (x, y, 0);
obj.renderer.material.color = color;
if (color == Color.black)
{
w = w +1;
Debug.Log("Black found");
}
else
{
Debug.Log("White found");
}
}
}
}
}