acidrain83 Geschrieben 25. Juni 2018 Melden Share Geschrieben 25. Juni 2018 Hy Freunde Also ich hab hier diesen Code: var speed : int = 100; var action: int = 1; var movex : boolean = false; var movey : boolean = false; var movez : boolean = false; var again : boolean = true; var steps : int = 0; private var changex : int = 0; private var changey : int = 0; private var changez : int = 0; private var intcount: int = 0; private var count : float = 0; private var wieviel : int = 0; function Start () { } function Update () { if (again == false) return; wieviel = speed * Time.deltaTime; if (steps != 0){ count = count +(1 * Time.deltaTime); intcount = count; if (intcount == steps){ again = false; } } if (movex == true){ changex = wieviel; } if (movey == true){ changey = wieviel; } if (movez == true){ changez = wieviel; } switch (action){ case 1 : transform.Translate(changex,changey,changez); break; case 2 : transform.Rotate(changex,changey,changez); break; case 3 : transform.localScale = transform.localScale + Vector3(changex,changey,changez); break; default: Debug.Log("Was zum Himmel, nichts geht"); break; } } Und ich hab ein kleines Problem beim verstehen damit Also wie wir sehen ist die Variable Steps eine Integer und mit 0 initialsiert Aber bei der If Abfrage if (steps != 0) und der weiteren if abfrage komme ich nicht ganz mit. weil eigentlich sollte der code darin ja nie ausgeführt werden da steps immer 0 ist . und in dem buch was ich lese steht zwar das wenn steps 0 ist eine endlosschleife entsteht. Aber wieso? dann sollte der code count = count +(1*Time.deltaTime); ja nie ausgeführt werden und der restliche code ja auch nicht ! Oder komm ich da irgendwie nicht mit? und bei diesem code hab ich auch probleme: if (movex == true){ changex = wieviel; } denn movex ist auch mit "false " initialisiert worden und wird nirgens auf true gesetzt. also sollte der code doch auch nicht ausgeführt werden. bitte um aufklärung.verstehe das nicht ganz. mfg Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 25. Juni 2018 Melden Share Geschrieben 25. Juni 2018 vor 6 Minuten schrieb acidrain83: weil eigentlich sollte der code darin ja nie ausgeführt werden da steps immer 0 ist . Wenn man bei UnityScript nicht "private" dranschreibt, ist die Variable automatisch "public", wie es auch hier der Fall ist. Dadurch kann man den Wert der Variablen von außen, also aus anderen Klassen heraus, ändern; und im Unity-Kontext heißt das zusätzlich, dass man den Wert im Editor einstellen kann. vor 8 Minuten schrieb acidrain83: und in dem buch was ich lese steht zwar das wenn steps 0 ist eine endlosschleife entsteht. Da hier nirgendwo eine Schleife zu sehen ist, stimmt das zumindest für den geposteten Code nicht. vor 9 Minuten schrieb acidrain83: denn movex ist auch mit "false " initialisiert worden und wird nirgens auf true gesetzt. Siehe oben. Du kannst den Wert im Editor ändern und damit dieses Script für mehrere Objekte benutzen, die sich unterschiedlich verhalten; je nachdem, wie du die Einstellungen setzt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
acidrain83 Geschrieben 25. Juni 2018 Autor Melden Share Geschrieben 25. Juni 2018 danke für die antwort ja das mit dem ändern im inspector usw weiß ich ... ahhh ok das problem mit movex usw ist gelöst das war das ich vergessen habe das ich den ja immer ändere im inspector.lol aber step bleibt immer 0....also wenn in das feld steps im inspector der wert 0 bleibt oder eingetragen wird, erfolgt die veränderung endlos......(falsche wortwahl) ändert man aber den wert von steps auf 5 dann wird die gewählte action nur eine gewisse zeit abgespielt. kannst es probieren wenn du lust hast.... würde mich wirklich darüber freuen wenn ich das verstehen würde warum es endlos ist... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 25. Juni 2018 Melden Share Geschrieben 25. Juni 2018 Also ich weiß ja nicht was das für ein Script ist, woher du es hast und wofür es gut sein soll, aber... es kann sein, dass man einfach ein zweites Script baut, dass diesem Script quasi die Anweisung gibt, bestimmte Dinge zu tun, indem steps einmal hochgesetzt werden. Für diese Vermuting fehlt aber irgendwie das steps--; irgendwo, oder etwas vergleichbares. Kann es sein, dass du das Script abgetippt und dabei einfach mindestens eine Zeile vergessen hast? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
acidrain83 Geschrieben 27. Juni 2018 Autor Melden Share Geschrieben 27. Juni 2018 ja dieses Skript habe ich abgetippt aber es fehlt überhaupt nichts. in meinem buch also wo dieses skript drin steht wird gesagt das die variable steps im prinzip nur macht das wenn man zb: steps = 40 eingibt im inspector die ausführung also die ACTION nur 40 sekunden lang dauert. aber gibt man 0 ein oder ändert nichts wird sie endlos ausgeführt. und nein kein anderes skript greift auf das zu. oder der gleichen. würde auch gern verstehen warum das so ist....aber vielleicht ist es weil es unityscript ist und maybe war das damals so bei der sprache. eins noch: wenn ich zb: var object : Transform; habe wie kann ich der variable direkt ein objekt zuweisen und nicht erst im inspektor? weil wenn man statt Transform einfach GameObject nehmen würde könnte ich einfach object = GameObject.Find("BlaBla"); schreiben und damit wäre das objekt direkt ausgewählt.aber bei der Transform Komponente geht das leider nicht so. wäre toll wenn mir jemand helfen könnte. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 28. Juni 2018 Melden Share Geschrieben 28. Juni 2018 Hm. steps wird nirgendwo geändert - weder von innen noch von außen. Dann steht in deinem Buch leider etwas falsches drin. Denn dass sich da magisch etwas an der Variable ändert, ist nicht der Fall. Und nein, auch nicht, weil das UnityScript ist. Das wird zwar nicht mehr benutzt, ist aber auch nur leicht abgewandeltes JavaScript und entsprechend gibt es noch genügend Leute, die sich damit auskennen vor 13 Stunden schrieb acidrain83: eins noch: Wenn du nicht mit einem konstanten Wert initialisieren kannst, wie z.B. var number : int = 10; dann musst du es in Awake machen: var thing : Transform; function Awake() { thing = GameObject.Find("Thing").transform; } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
acidrain83 Geschrieben 1. Juli 2018 Autor Melden Share Geschrieben 1. Juli 2018 ok werde ich mir merken. wenn du willst dann würde ich dir die 2 seiten schicken wo dieser code beschrieben steht.....aber natürlich musst du es nicht tun.war halt nur der fall das es mich interessiert hat. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 1. Juli 2018 Melden Share Geschrieben 1. Juli 2018 Nee, danke ^^ Wenn du Hilfe brauchst, gerne, aber so zum Spaß komischen Code durchlesen... lieber nicht Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
acidrain83 Geschrieben 14. Juli 2018 Autor Melden Share Geschrieben 14. Juli 2018 ok kein problem. 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.