Simsala Animationen Geschrieben 2. April 2019 Melden Share Geschrieben 2. April 2019 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 2. April 2019 Melden Share Geschrieben 2. April 2019 vor 6 Stunden schrieb Simsala Animationen: Doch wo finde ich das? Wenn deine Textur ein Asset ist (und nicht zur Laufzeit generiert wird), dann musst du sie anklicken und unter "Advanced" "Read/Write Enabled" auswählen. Danach den "Apply"-Knopf nicht vergessen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.