Jump to content
Unity Insider Forum

Pasies

Members
  • Posts

    12
  • Joined

  • Last visited

Pasies's Achievements

Member

Member (2/3)

0

Reputation

  1. Hab mich bisschen weiter eingelesen und habe erfahren, dass Input.GetMouseButtonDown für einen ganzen Frame true bleibt. Da ich zwei solcher If-Statements verwende, was ich am Anfang blöder weise nicht erwähnt habe, habe ich jetzt vor der While-Schleife yield return null hinzugefügt. Ist von der Performance wahrscheinlich nicht die beste Möglichkeit, allerdings ist das Spiel, was ich zurzeit entwickle, definitiv nicht anspruchsvoll und es gibt keine aktiven Figuren oder sonstiges.
  2. Ja meine die Update. Die Funktion wird aber definitiv aufgerufen, da ich den Debug außerhalb der While-Schleife getestet habe und die aktuelle Szene ja erneut geladen wird. Also kann es sein, dass man in Update besser keine StartCoroutine aufruft? Was wäre eine andere Option?
  3. Gut zu wissen, dass die Zeilen nach der StartCoroutine weiterhin ausgeführt werden. Allerdings ist das Ergebnis gleich. Beim Debuggen habe ich gemerkt, dass die While-Schleife nicht betreten wird. private IEnumerator waitForInput() { while (!Input.GetMouseButtonDown(0)) { Debug.Log("wait for input"); yield return null; } SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); } Allerdings wüsste ich nicht wieso dies nicht eintrifft, da die Bedingung ja sagt: Solange es keinen Input gibt bleibe in der Schleife. Habe ich vlt. einen Denkfehler oder gibt es eine andere Bedingung die für die While-Schleife passen würde? Gruß
  4. Ich möchte gerne, dass am Ende, wenn der Spieler verliert, die Szene weiterhin zu sehen ist, mit der Aufschrift "Tap To Play Again". Alles funktioniert der Text wird dementsprechend erzeugt etc. Allerdings startet das Spiel sofort neu, wenn der Spieler eine falsche Antwort wählt. Also funktioniert anscheinend meine Methode WaitForInput nicht richtig. Hab einiges gegoogelt und nichts hilfreiches gefunden. void update() { if (richtige antwort) { //weiter } else { startCoroutine(WaitForInput()); //lade die Szene neu } } private IEnumerator WaitForInput() { while (!Input.GetMouseButton(0)) { yield return null; } } Hoffe ihr könnt mir helfen Gruß
  5. Kann mir jemand sagen, wie ich ein Startmenü mit dem Game im Hintergrund bauen kann, und wenn ich dann auf ein Button drücke, dass das Game dann erst anfängt? Gerne auch irgendwelche Links zu Docs usw. Hier ein Beispiel:
  6. Ich hab zum Test die App auf meinem Handy getestet. Dort funktioniert es so wie es soll. Allerdings wird mir in Unity was anderes Visualisiert. Hier mal zwei Bilder: Weiß du warum Unity das ganze so anzeigt, und im Hintergrund schon das Spiel läuft bzw. wie ich das ändern kann? Kannst du mir noch die Sterne hinter den Szenennamen erklären? DAnke
  7. Hey, ich habe einen Button erstellt mit einem simplen Script, der wie folgt aussieht: public class MainMenu : MonoBehaviour { public void PlayGame() { SceneManager.LoadScene(1); } public void QuitGame() { Application.Quit(); } } Beim Index 1 ist die Scene vom Game. Wenn ich den Play Button klicke startet auch das Spiel. Nur mein Problem ist, dass das Spiel auch beim Starten der App startet. Man sieht es auch im Hintergrund, wo die Buttons noch im Vordergrund sind. Ich habe einen Script, in dem das Spiel abläuft. Der Aufbau des Scripts sieht wie folgt aus: public class MainGame : MonoBehaviour { // Start is called before the first frame update void Start() { GenerateGrid(); StartCoroutine(startRound()); } // Update is called once per frame void Update() { CODE } private void GenerateGrid() { CODE } IEnumerator startRound() { Code } } Ich denke mal ich muss statt void Start() etwas anderes benutzen, habe aber leider nichts hilfreiches gefunden. Vielen Dank
  8. Vielen Dank für die ausführliche Erklärung
  9. Ah, das mit über & unter einem Collider hab ich so gar nicht wahrgenommen Aber jetzt klappt es & habe einiges dazu gelernt. Noch eine Frage: Gibt es einen Grund weshalb ich Physics2D.OverlapPoint benutzen sollte, außer dass ich nur wissen will, dass unter der Maus ein Objekt ist? Da bekomme ich nämlich eine NullReferenceException, wenn ich keinen Collider treffe, im Gegensatz zum Raycast. Weiß jetzt nicht ob es später zu Problemen führen kann.
  10. Genau, in der Konsole taucht nichts auf. Ich benutze den Box Collider 2D, die Logs werden nicht gefiltert, und ja der Mauszeiger steht über einen Collider. Die Objekte werden mittels eines Scripts erstellt, für den ich einen Prefab habe, in dem Fall der Viereck. Muss ich vlt. hier noch etwas beachten? Im Anhang noch paar Bilder
  11. public class ObjectDetecter : MonoBehaviour { // Update is called once per frame private void Update() { if (Input.GetMouseButtonDown(0)) { RaycastHit2D hit = Physics2D.Raycast(Input.mousePosition, Vector2.up); if (hit.transform != null) { Debug.Log(hit.transform.gameObject.name); } } } } Hab es jetzt mit den 2D Methoden versucht, allerdings funktioniert es trotz dessen nicht. Woran kann es liegen?
  12. Abend, ich bin ein Neuling in Unity und wollte erst mal die Basics kennen lernen. Allerdings komme ich hier auch nicht weiter, denn ich versuche, mit Hilfe eines Rays, Objekte zu erkennen allerdings klappt es nicht. Ich habe folgenden Code: private void Update() { if (Input.GetMouseButtonDown(0)) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Physics.Raycast(ray, out hit, 100.0f); if (hit.transform != null) { Debug.Log(hit.transform.gameObject.name); } } } Das Spiel ist in 2D, und alle Objekte haben auch einen Collider. Das Script habe ich der Main Camera hinzugefügt. Wenn ich nun auf die Objekte klicke, in meinem Fall nur Vierecke, passiert in der Console nichts. Wo liegt mein Fehler, oder hab ich noch was notwendiges vergessen?# Liebe Grüße
×
×
  • Create New...