chrische5 Geschrieben 14. Juni 2020 Melden Share Geschrieben 14. Juni 2020 Hallo Ich habe mal wieder eine allgemeine Frage: Wie gehe ich am besten mit Mausinput um? Ich würde gern den Cursor je nach "Untergrund" ändern. Meine Idee ist, ein Skript an die Maus zu hängen, welches im Update immer einen raycast senden und schaut, was es trifft und dann entsprechend den Cursor ändert. Allerdings müsste das Script ja dann die verschiedenen Treffer interpretieren können. Das klingt nach vielen if-Abfragen a la: if(hit.GetComponent<Gras>()) { } .... Ist das ein guter Weg? Christoph Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 14. Juni 2020 Melden Share Geschrieben 14. Juni 2020 Was meinst du genau mit Untergrund? Hintergrund: Es wären unterschiedliche Lösungen, je nachdem ob es sich um ein Unityterrain handelt oder ob du einfach nur auf verschiedene GO reagieren möchtest die in der Szene verteilt sind. Wenn es GO sind die in der Scene verteilt sind würde ich:https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseEnter.html undhttps://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseExit.html verwenden und den Mousecursor verändern je nachdem was für eine Komponente an dem GO hängt (so wie du es oben schon angedeutet hast). Das aktuelle GO ist dir bekannt, da du für die beiden oberen Methoden ein entsprechendes Skript an die zu erkennenden GO hängen musst. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
chrische5 Geschrieben 15. Juni 2020 Autor Melden Share Geschrieben 15. Juni 2020 Hallo Es handelt sich um ein 2D Spiel. Also wird der Untergrund entweder eine Tilemap oder eben gameobjects auf dieser sein. Ich schaue mal, ob ich das mit den, von dir gezeigten, events lösen kann. Danke Christoph Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 15. Juni 2020 Melden Share Geschrieben 15. Juni 2020 Bei GameObjects sollte es so gehen und die Verwendung solcher Trigger ist eben wesentlich performanter als die Update-Methode mit Raycasts zu belasten. Ansonsten wenn du bei OnMouseEnter() als GO eine Tilemap findest, dann würde ich hier doch ein Raycast durchführen und zwar immer bei OnMouseHover(). (Die Tilemap muss einen Collider haben) Wenn du dann die Contactdaten hast über den Raycast, dann sollte es so funktionieren: - GetComponent() des Colliders um an die Tilemap zu kommen - Tilemap.layoutGrid um an das Grid von der TileMap.zu kommen - Grid.WorldToCell mit dem Kollisionspunkt aus dem Raycast um an die Cellcoordinaten zu kommen - und zum Schluss TileMap.GetTile oder TileMap.GetInstantiatedObject um an die TileBase zu kommen (oder das GO des tile) (wo der Unterschied zwischen TileMap.GetTile und TileMap.GetInstantiatedObject genau liegt habe ich aber auch nicht verstanden) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.