Sascha Geschrieben 24. Februar 2020 Melden Share Geschrieben 24. Februar 2020 Weiß echt nicht genau, woran es da hapert. Du hast die OnMouseDown-Methode, in die du alles mögliche reinschreiben kannst, was passieren soll, wenn ein Collider berührt wird. Da kannst du dann entweder Dinge im gleichen Script ändern oder z.B. eine Methode bei einem anderen Objekt aufrufen, wie oben beschrieben. Ob über diese Extra-Ecke oder nicht, am Ende setzt du dann den Wert irgendeiner Variable; "myTimer" klingt da ganz vielversprechend. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 26. Februar 2020 Autor Melden Share Geschrieben 26. Februar 2020 Okay, ich probiers. Bin halt wie gesagt sehr neu bei Unity und kann deshalb nicht vieles. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 26. Februar 2020 Autor Melden Share Geschrieben 26. Februar 2020 Also ich hab jz wirklich seit 3 Stunden alles in meiner Kraft liegende ausprobiert, aber ich verzweifel daran. Ich will einfach nur, dass wenn man den vom Circle Collider markierten Bereich berührt, dass dann der Timer neu resetet wird. Wirklich, ich kriege das Problem nicht gelöst Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 26. Februar 2020 Melden Share Geschrieben 26. Februar 2020 Irgendwie sowas halt: private void OnMouseDown() { timer = 0f; } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 27. Februar 2020 Autor Melden Share Geschrieben 27. Februar 2020 nein, ich glaube du weißt nicht was ich meine. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 27. Februar 2020 Autor Melden Share Geschrieben 27. Februar 2020 ich müsste das Problem spätestens heute Abend gelöst haben, weil ich mit dem ganzen schon unter Zeitdruck stehe leider. Würde mich über eine Antwort freuen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 27. Februar 2020 Melden Share Geschrieben 27. Februar 2020 vor 2 Stunden schrieb Tim96: nein, ich glaube du weißt nicht was ich meine. Na, dann erklär doch nochmal. Ich bin halt nicht in deinem Kopf drin. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 27. Februar 2020 Autor Melden Share Geschrieben 27. Februar 2020 Jo. Also, ich hab, wie du weißt, mit dem Circle Collider einen Bereich markiert. Und wenn man diesen drückt dann „spinnt“ sich der Pfeil (ich habe noch Score eingebaut und dass der Pfeil eine höhere Beschleunigung bekommt pro klick und beim speed 20 stoppt) Und jetzt will ich es halt so schaffen, dass ich einen Counter habe im Game, der 1sek läuft und dann bei 0 endet. Aber der Counter soll resetet werden, wenn man halt die markierte Fläche vom Circle Collider drückt. Ich habe zwar schon einen Counter bauen können, aber diese Funktion, dass die Zeit resetet wird beim drücken in die Fläche, habe ich noch nicht hinbekommen. Wäre dir sehr sehr dankbar, wenn du das Problem lösen könntest🙏 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 27. Februar 2020 Melden Share Geschrieben 27. Februar 2020 Welches Problem genau? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 27. Februar 2020 Autor Melden Share Geschrieben 27. Februar 2020 vor 2 Stunden schrieb Kojote: Welches Problem genau? Das war ich beschrieben habe Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 28. Februar 2020 Melden Share Geschrieben 28. Februar 2020 Langsam wird's ein bisschen lästig. Du kannst halt gerne immer wieder beschreiben, was du tun willst, aber du hast halt immer noch nicht beschrieben, woran es hakt. Und genau danach hat @Kojote gefragt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 28. Februar 2020 Autor Melden Share Geschrieben 28. Februar 2020 Habe das ein bisschen undeutlich ausgedrückt. Mit Problem meinte ich, dass ich das beschriebene nicht umsetzen kann Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 28. Februar 2020 Melden Share Geschrieben 28. Februar 2020 Das ist uns schon klar... aber wieso nicht? Du kannst ja auch sagen "ich kriege den Tisch nicht zusammengebaut." Aber liegt das daran, dass du den Hammer nicht richtig geschwungen kriegst? Dass du die Nägel nicht findest? Oder weißt du nicht genau, wie der Tisch am Ende aussehen soll? Es ist eine sehr wichtige Fähigkeit, herausfinden zu können, was genau schief läuft und woran es hakt. Du hast hier eine ganz simple Aufgabe vor dir: Spieler drückt auf Collider, Timer wird zurückgesetzt. Wir sagen das halt nicht, um dich zu ärgern... wir wissen halt wirklich nicht, woran es scheitert. Du weißt spätestens aus diesem Thread, wie man auf Klicks reagiert, wie man Methoden einer anderen Komponente aufruft, und dein Timer ist eine float-Variable, die hochgezählt wird, und die du durch Setzen auf 0 wieder zurücksetzen kannst. Welcher Teil davon ist also gerade problematisch? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 28. Februar 2020 Autor Melden Share Geschrieben 28. Februar 2020 Ok, also ich sage erstmal was ich schon habe. Das Script habe ich auf "Text" drauf gepackt. Das Script sagt halt, dass wenn man das Programm startet, dass das dann von 3 runtergezählt wird und bei 0 stoppt. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Zeitcount : MonoBehaviour { public double myTimer = 3; private Text timerText; private bool timerIsActive = true; // Start is called before the first frame update void Start() { timerText = GetComponent<Text>(); } // Update is called once per frame void Update() { if (timerIsActive) { myTimer -= Time.deltaTime; timerText.text = myTimer.ToString(); print(myTimer); if (myTimer <= 0) { myTimer = 0; timerIsActive = false; } } } } Und damit du jetzt verstehst was ich nicht hin bekomme. Es hakt ganz einfach daran, dass ich nicht begreife, wie man programmieren kann, dass die Zeit beim klick auf den Circle Collider wieder resetet wird. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 28. Februar 2020 Autor Melden Share Geschrieben 28. Februar 2020 Wenn du mich immer noch nicht verstehst, weiß ich nicht mehr wirklich was ich noch schreiben soll. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 29. Februar 2020 Melden Share Geschrieben 29. Februar 2020 Du hast wirklich alle Bauteile dafür gekriegt. Dein GameObject mit Collider kriegt ein Script mit OnMouseDown und einem Feld wo du dein Timer-Script reinziehen kannst: public Zeitcount timer; private void OnMouseDown() { timer.ResetTimer(); } Und dein Timer-Objekt kriegt diese ResetTimer-Methode, in der deine Timer-Variable zurückgesetzt wird: public void ResetTimer() { myTimer = keineAhnung; } Was für einen Wert du da hintust, ist dir überlassen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 29. Februar 2020 Autor Melden Share Geschrieben 29. Februar 2020 Jap, hat endlich geklappt danke Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 5. März 2020 Autor Melden Share Geschrieben 5. März 2020 Hi, ich hoffe ich bin nicht allzu nervig. Ich bräuchte eine Lösung, dass wenn man die restliche Fläche anklickt (sprich die Fläche, die nicht mit dem Circle Collider markiert ist), dass das Spiel stoppt, also die Zeit und der Score angehalten wird. (Den Score-Script schicke ich als neue Nachricht). Außerdem soll bei nächsten Klick auf den Circle Collider das Spiel praktisch neu gestartet werden. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 5. März 2020 Autor Melden Share Geschrieben 5. März 2020 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ArrowRotation : MonoBehaviour { public static float timer = 0; private Text timescore; private float currentAngle = 0f; private Quaternion targetRotation; public float speed = 0f; public void Spin() { timescore = GetComponent<Text>(); ScoreBoard.scoreValue += 2; var z = Random.Range(0f, 360f); targetRotation = Quaternion.Euler(0, 0, z); currentAngle += Random.Range(110, 250f); currentAngle = Mathf.Repeat(currentAngle, 360f); speed = speed + 0.35f; if (speed >= 5) { speed = speed + 0.25f; //Effekt einfügen später z.B. Ton effekt und animierter Effekt if (speed >= 22) { speed = 22; } } } private void Update() { transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime); targetRotation = Quaternion.Euler(0, 0, currentAngle); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 5. März 2020 Melden Share Geschrieben 5. März 2020 vor 1 Stunde schrieb Tim96: ich hoffe ich bin nicht allzu nervig. Kannst ja mal deinen Code als solchen einfügen, mit dem <>-Knopf über der Textbox vor 1 Stunde schrieb Tim96: Ich bräuchte eine Lösung, dass wenn man die restliche Fläche anklickt Kannst ja ganz stumpf einen dicken fetten Collider hinter den Kreis packen, der den ganzen Bildschirm ausfüllt. vor 1 Stunde schrieb Tim96: (Den Score-Script schicke ich als neue Nachricht). Kannst auch gerne alles in einen Beitrag machen... vor 1 Stunde schrieb Tim96: dass das Spiel stoppt, also die Zeit und der Score angehalten wird. Bauste eine bool-Variable dahon, setzt die auf true wenn das Spiel läuft, sonst auf false. Dein Timer läuft nur, wenn die Variable auf true gesetzt ist. Du kannst auch die Zeit komplett anhalten, mit Time.timeScale. Ist allerdings die weniger schöne Lösung, da sie, wenn du noch einmal etwas bauen willst, sofort Probleme verursacht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 6. März 2020 Autor Melden Share Geschrieben 6. März 2020 vor 15 Stunden schrieb Sascha: Kannst ja ganz stumpf einen dicken fetten Collider hinter den Kreis packen, der den ganzen Bildschirm ausfüllt. Den Gedanken hatte ich halt auch schon, allerdings war das dann so, dass der andere Collider keine Wirkung mehr hatte Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 6. März 2020 Autor Melden Share Geschrieben 6. März 2020 vor 15 Stunden schrieb Sascha: vor 17 Stunden schrieb Tim96: Bauste eine bool-Variable dahon, setzt die auf true wenn das Spiel läuft, sonst auf false. Dein Timer läuft nur, wenn die Variable auf true gesetzt ist. Du kannst auch die Zeit komplett anhalten, mit Time.timeScale. Ist allerdings die weniger schöne Lösung, da sie, wenn du noch einmal etwas bauen willst, sofort Probleme verursacht. aller klar ich probiere es aus, danke! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 6. März 2020 Autor Melden Share Geschrieben 6. März 2020 ok, bin nicht schlau genug, dass umzusetzen. kannst du mir das script schicken? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 7. März 2020 Melden Share Geschrieben 7. März 2020 Am 6.3.2020 um 14:46 schrieb Tim96: ok, bin nicht schlau genug, dass umzusetzen. Das ist Quatsch, du musst dich nur hinsetzen und dich da reinfuchsen. Das ist am Anfang nicht wirklich leicht, aber früher oder später muss das halt gehen. Bin jetzt nicht so dafür zu haben, dass ich das Script einmal runtertippe... ich merke aber auch gerade, dass du das Script einfach deaktivieren kannst, da es ja nur die Drehung macht. Das machst du mit enabled: timer.enabled = false; Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tim96 Geschrieben 15. März 2020 Autor Melden Share Geschrieben 15. März 2020 Habe jetzt das Programm noch gut weiter geschafft, aber eine Sache stört mich noch und zwar, dass der Pfeil sich sehr oft immer erst in die Rechte und dann in die Linke, dann wieder in die Rechte und so weiter... Richtung dreht dreht. Oder, dass der Pfeil bis zu 6 mal hintereinander nur in die rechte Richtung schwingt. Das selbe gilt auch noch für die Linke Seite. Das finde ich auf dauer aber etwas nervig, deshalb würde ich es gerne so haben, dass der Pfeil höchstens 3 mal hintereinander nur nach rechts schwingen kann, höchstens 3 mal hintereinander nur nach Links schwingen kann und höchstens 4 mal hintereinander abwechselnd von links nach rechts bzw. von rechts nach links schwingt. Könntest du mir dabei helfen? Danke im voraus. 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.