Jump to content
Unity Insider Forum
  • Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

Dog

Members
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Dog

  • Rank
    Newbie
  • Birthday 01/07/1989

Profile Information

  • Gender
    Male
  • Location
    Germany,Hessen
  1. Falsche Position der Maus Position.

    Das passt mit der Maus Position überein. Musste nur pausieren da man den Ray bei TopDown nicht sieht. *Edit: Also es muss glaube an diesen 2 schleifen liegen for (int x = -1; x < Differenz.x; x++) { for (int y = -1; y < Differenz.z; y++) { if(x == -1) { x = 0; } if(y == -1) { y = 0; } Vector3 TempPosition = new Vector3(Startposition.x + x, Startposition.y, Startposition.z + y); GameObject TempObjekt = Instantiate(SelectBoden, TempPosition, Quaternion.identity); } } Sobald ich die "-1" nicht in 0 umwandel setzt er bei einem einfachen Mausklick dieses Objekt an die exakte Position. Wenn ich dann aber ein Feld mit gedrückter Maustaste ziehe ist das ganze Feld verschoben. Wenn ich in den schleifen es auf "0" stelle kommt kein Objekt bei einem einfachen Mausklick. *Edit2: Ok ich habe es jetzt mit einer anderen Variante hinbekommen. void Platzierung() { if (isBuildMode && SelectBoden != null) { if (Endposition != new Vector3(0.0f, 0.0f, 0.0f) && Startposition != new Vector3(0.0f, 0.0f, 0.0f)) { bool aNegativ = false; bool bNegativ = false; float tLänge = Startposition.x - Endposition.x; float tBreite = Startposition.z - Endposition.z; Vector3 tWert; //Rundung: tLänge = Mathf.Round(tLänge); tBreite = Mathf.Round(tBreite); Debug.Log("Startposition: " + Startposition); Debug.Log("tLänge: " + tLänge + " | tBreite: " + tBreite); //Prüfen ob der Wert Negativ ist, wenn ja dann Umwandeln in einen Positiven Wert: if (Mathf.Sign(tLänge) == -1) { aNegativ = true; tLänge = Mathf.Abs(tLänge); } if (Mathf.Sign(tBreite) == -1) { bNegativ = true; tBreite = Mathf.Abs(tBreite); } Debug.Log("boolA: "+ aNegativ+ " |boolB: " + bNegativ+ " | ABS-tLänge: " + tLänge + " | ABS-tBreite: " + tBreite); //Schleifen: for (int x = -1; x < tLänge; x++) { for (int z = -1; z < tBreite; z++) { if (x == -1) { x = 0; } if (z == -1) { z = 0; } //Wert x,y wird bei Negativ wieder Negativ gesetzt: if (aNegativ) { tWert.x = Startposition.x + x; } else { tWert.x = Startposition.x - x; } if (bNegativ) { tWert.z = Startposition.z + z; } else { tWert.z = Startposition.z - z; } Vector3 TempPosition = new Vector3(tWert.x, Startposition.y, tWert.z); Debug.Log("TempPosition: " + TempPosition); GameObject TempObjekt = Instantiate(SelectBoden, TempPosition, Quaternion.identity); } } } } } Erstmal auch vielen Dank für die Antwort
  2. Einen schönen guten Abend, dies ist mein erster Beitrag hier im Forum. Zunächst möchte ich erwähnen das ich in dem Bereich noch ein Anfänger bin! Diese Information gebe ich damit ihr euch nicht Wundert oder schockiert seit wenn dieser Code evtl. totaler mist ist. Ich sitze aktuell an ein Building/Placement Script womit man wie in "Prison Achitect" , "Sim Airport" o.ä. Böden,Wände etc. platzieren kann in verschiedenen größen. Also ich drücke mit der Maustaste und ziehe ein Feld wo dann zum Beispiel ein Boden platziert wird. Das ganze habe ich wie folgt hinbekommen: void Startpunkt() { TempPlacement = true; Startposition = gridSnap(AktuellePosition()); //Gridstart = gridSnap(AktuellePosition()); } void Endpunkt() { TempPlacement = false; Endposition = gridSnap(AktuellePosition()); //Gridstart = Vector3.zero; Platzierung(); } void Platzierung() { if (isBuildMode && SelectBoden != null) { if (Endposition != new Vector3(0.0f, 0.0f, 0.0f) && Startposition != new Vector3(0.0f, 0.0f, 0.0f)) { Vector3 Differenz; Debug.Log(Startposition); Debug.Log(Endposition); Differenz.x = Vector3.Distance(new Vector3(Startposition.x , 0, 0), new Vector3(Endposition.x, 0, 0)); Differenz.z = Vector3.Distance(new Vector3(0, 0, Startposition.z), new Vector3(0, 0, Endposition.z)); Debug.Log("Differenz.x = " + Differenz.x + " | Differenz.z = " + Differenz.z); for (int x = -1; x < Differenz.x; x++) { for (int y = -1; y < Differenz.z; y++) { Vector3 TempPosition = new Vector3(Startposition.x + x, Startposition.y, Startposition.z + y); GameObject TempObjekt = Instantiate(SelectBoden, TempPosition, Quaternion.identity); } } } } } public Vector3 AktuellePosition() { Vector3 Maus = new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z); Ray ray = Camera.main.ScreenPointToRay(Maus); RaycastHit hit; if (Physics.Raycast(ray, out hit)){return hit.point;} return Vector3.zero; } public Vector3 gridSnap(Vector3 OriginalPosition)//Tutorial unitylession { float granularity = 1f; Vector3 snappedPosition = new Vector3(Mathf.Floor(OriginalPosition.x / granularity) * granularity, OriginalPosition.y, Mathf.Floor(OriginalPosition.z / granularity) * granularity); return snappedPosition; } Der Startpunkt wird bei GetMouseButtonDown aufgerufen und der Endpunkt bei GetMouseButtonUp. Das ganze klappt soweit auch jedoch stimmt die Position nicht mit der Maus Position. Sobald ich in dem Spiel irgendwo hinklicke wird das Objekt oder die Objekte weiter weg gesetzt. Dort wo die Maus ist klickte ich einmal und der/die grüne(n) Quadrat(e) spawnt/spawnen dann halt ein Feld oder zwei weiter weg von der Maus. Ich bedanke mich schon einmal für das Lesen und hoffe ihr könnt mir helfen. Lg. Dog
×