Jump to content
Unity Insider Forum

Hilfe bei einem Skript


Dami1302

Recommended Posts

Hallo, 

Ich habe eine Aufgabe bekommen wo ich folgendes Skript verändern soll:

#pragma strict
enum MouseButtons { linke, rechte, mittlere};
enum Speed { aus, langsam, mittel, schnell};
var objectSpeed : Speed = Speed.langsam;
private var numberOfSpeed : int = System.Enum.GetValues (Speed).length - 1;

function Start () {

}

function Update () {

    var mySpeed : int = parseInt (objectSpeed) * 100;
    transform.Rotate (mySpeed * Time.deltaTime, 0, 0);

    if (Input.GetMouseButtonDown (MouseButtons.linke)) {
            if (objectSpeed < numberOfSpeed) 
            objectSpeed = objectSpeed + 1;
        }

    else {
        if (Input.GetMouseButtonDown (MouseButtons.rechte)) {
            if (objectSpeed > 0) 
            objectSpeed = objectSpeed - 1;
        }
    }
    
    Debug.Log (mySpeed + " " + objectSpeed);

}

Ich soll es so ändern, dass es beim Klicken mit der Maus keine untere und obere Grenze mehr für die Werte gibt. Wenn der letzte Wert erreicht ist, soll beim Klicken mit der linken Maustaste wieder der erste verwendet werden. Wird der erste Wert erreicht, soll beim Klicken mit der rechten Maustaste wieder der letzte verwendet werden. 

Ich hoffe ihr könnt mir helfen

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du machst ne Abfrage ob die linke Maustaste gedrückt wurde.
Innerhalb der Abfrage machste eine weitere Abfrage, so wie du sie ja schon hast, ob denn objectSpeed noch kleiner als numberOfSpeed ist. Wenn dem so ist, dann erhöhst du den objectSpeed um eins. Ist der objectSpeed aber nicht kleiner dem numberOfSpeed, also else, dann stellst du objectSpeed auf 0.
Ja und für die rechte Maustaste machste das genau umgekehlt. Ist der wert >0, kannste einen abziehen. Ist der Wert 0, wird der Wert zu numberOfSpeed.
Die 0 und numberOfSpeed sind ja deine 2 Grenzen und beim Übertreten der einen Grenze musst du einfach zur anderen Grenze und umgekehrt. Innerhalb der Grenzen bewegst du dich ganz normal mit +1 und -1.

Mit Unity hat dein Code aber nix zu tun. ;)
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Leider funktioniert es immer noch nicht richtig. Wo ist der Fehler ?

#pragma strict
enum MouseButtons { linke, rechte, mittlere};
enum Speed { aus, langsam, mittel, schnell };
var objectSpeed : Speed = Speed.langsam;
private var numberOfSpeed : int = System.Enum.GetValues (Speed).length - 1;

function Start () {

}

function Update () {

    var mySpeed : int = parseInt (objectSpeed) * 100;
    transform.Rotate (mySpeed * Time.deltaTime, 0, 0);

    if (Input.GetMouseButtonDown (MouseButtons.linke)) {
            if (objectSpeed < numberOfSpeed) 
            objectSpeed = objectSpeed + 1;
        }

        else {
            if (objectSpeed > numberOfSpeed)
                objectSpeed = 0;
            }

     
    if (Input.GetMouseButtonDown (MouseButtons.rechte)) {
        if (objectSpeed > 0) 
        objectSpeed = objectSpeed - 1;
        }
    
        else {
            if (objectSpeed == 0)
                objectSpeed = numberOfSpeed;
            }

    Debug.Log (mySpeed + " " + objectSpeed);

}

Das Skript wird einem Objekt zugeordnet ( in meinem Fall einem Würfel) was sich dann um die eigene Achse dreht. Dabei kann man die Drehgeschwindigkeiten ( aus, langsam, mittel und schnell) auswählen. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es liegt an deiner Klammersetzung!

Hier mal ein Pseudocode für dein Problem.
 

if (maus.rechts){
  if(kleiner){
    //mache plus;
  }
  else{
    //gehe zum anderen ende
  }
}
if(maus.links){
  if(größer){
    // mache minus
  }
  else{
    //gehe zum anderen ende
  }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...