Jump to content
Unity Insider Forum

Auslesen eizelner Pixelfarben von einer Textur


Recommended Posts

Ich habe versucht ein Script zu schreiben das dafür sorgt das wenn ich mit der Maus darüber fahre mir angibt welche Farbe die Textur an der Stelle hat.

Um erst einmal herauszufinden wie das geht habe ich versucht in der Unit Documentation etwas zu finden. Das erste was mir vorgeschlagen wurde war.

Texture2D.GetPixel

// Sets the y coordinate of the transform to follow the heightmap using UnityEngine; using System.Collections;

public class ExampleClass : MonoBehaviour { public Texture2D heightmap; public Vector3 size = new Vector3(100, 10, 100);

void Update() { int x = Mathf.FloorToInt(transform.position.x / size.x * heightmap.width); int z = Mathf.FloorToInt(transform.position.z / size.z * heightmap.height); Vector3 pos = transform.position; pos.y = heightmap.GetPixel(x, z).grayscale * size.y; transform.position = pos; } }

so wie ich die Beschreibung verstanden habe gibt das die Pixelfarbe zurück. Doch das einzige was passiert ist das ein Object damit die Position verändert. 

Dann stand noch etwas da das man die Textur auf TextureImporter.isReadable stellen muss. Doch wo finde ich das? 

Nach einiger Zeit bin ich dann soweit gekommen das wenn ein Strahl ein Object mit Textur trifft und er den Tag "Player" hat dann über public die Farbe rechts angezeigt wird. Doch selbst wenn die Farbe links blau ist und rechts grün wird mir immer nur blau angezeigt. Bzw das was ich in die publicspalte reingezogen habe.

   public Texture2D my_texture;
    public float x;
    public float y;
    public Color color;

   
 

RaycastHit hit;
        Vector3 MousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 9);
        Vector3 ObjektPosition = Camera.main.ScreenToWorldPoint(MousePosition);
 

 

        x = (ObjektPosition.x);
        y = (ObjektPosition.y);
        x = (Input.mousePosition.x);
        y = (Input.mousePosition.y);

        Debug.DrawRay(ObjektPosition, transform.forward*500 , Color.green);

        if (Physics.Raycast(ObjektPosition, transform.forward*500, out hit, 900))
        {
            if (hit.collider.tag == "Player")
            {
                Color pixel_colour = my_texture.GetPixel((Mathf.RoundToInt(x)), (Mathf.RoundToInt(y)));
                color = pixel_colour;
                print(pixel_colour);
            }
        }
    }
}

Gibt es da noch eine Möglichkeit die einzelnen Pixel einer Textur abzufragen?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...