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

Elharter

Members
  • Content count

    193
  • Joined

  • Last visited

  • Days Won

    2

Elharter last won the day on June 24 2016

Elharter had the most liked content!

Community Reputation

18 Gut

About Elharter

  • Rank
    Advanced Member
  • Birthday 07/17/1981

Profile Information

  • Gender
    Male
  • Location
    Vienna

Recent Profile Visitors

830 profile views
  1. Rotate & Movement

    Du drehst das monster SELBST nirgendwo..... du bewegst es in alle möglichen Richtungen. Du musst das monster per Rotate in sich noch drehen damit es sich auch dorthin schaut wo du es willst Mir ist noch ein wenig unklar was und wie du drehen willst. Welche Perspektive? Was soll sich mit welcher Eingabe drehen? Es hängt ja auch alles immer von der Perspektive ab. Aber grundsätzlich: du willst das sich das Objekt (monster) selbst auch dreht .....dH dh wenn du nach rechts gehst, soll sich das Gesicht von dem Monster auch nach rechts drehen.
  2. Ok .... gelöst und erledigt. Ich setze einfach für alle Trackobjekte > trackObject.layer = 2; // set Ignore Raycast Layer Somit stehen sich alle Objekte nicht mehr gegenseitig im Weg herum. Auch wenn noch ein paar alte (nicht zerstörte Objekte) beim Ladevorgang vorhanden sind. Yeah - danke Zer0
  3. Okay noch besser eingegrenzt mit: if (Physics.Raycast(trackObject.transform.position, Vector3.down, out hit)) { distanceToGround = hit.distance; Vector3 incomingVec = hit.point - trackObject.transform.position; Vector3 reflectVec = Vector3.Reflect(incomingVec, hit.normal); Debug.DrawLine(trackObject.transform.position, hit.point, Color.red, 30, false); //show-spawn line Debug.DrawRay(hit.point, reflectVec, Color.green, 30, false); //show reflection-line if (!hit.transform.gameObject.name.Contains("Terrain")) { Debug.DrawLine(trackObject.transform.position, hit.point, Color.yellow, 60, false); //show line if the object didnt hit terrain Debug.Log("Object " + prefab + "/ hitted:" + hit.transform.gameObject); } trackObject.transform.position = hit.point; if (TerrainRotation == true) { trackObject.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal); } } dH ich sehe wenn ein Objekt NICHT auf dem Terrain hitted.... ich krieg ne gelbe Linie und einen Debug.Log raus... Ergebnis1: Object StandNew (UnityEngine.GameObject)/ hitted:StandNew(Clone) (UnityEngine.GameObject) Die Tribüne hitted sich selbst..... toll. Ergebnis2 eine Barriere hittet ein Objekt das gar nicht auf der Map existiert...... meine Vermutung also: beim reload des Tracks sind "alte" Objekte noch kurz vorhanden. Vor jedem Track-Load cleare ich alle vorhergehenden Trackobjekte mit: //clear existing Trackobjects foreach (Transform child in trackobjectsParent.transform) { GameObject.Destroy(child.gameObject); } Offensichtlich dauert das zu lange...
  4. umfangreiche Daten abspeichern

    Hier auch etwas zu lesen: http://previewlabs.com/writing-playerprefs-fast/
  5. okay....das bringt erleuchtung...aber ich bin noch verwirrter als vorher: Wirft: Object Booth_Prefab (UnityEngine.GameObject)/ hitted:StandNew(Clone) (UnityEngine.GameObject) .... Booth = sind diese Hütten StandNew sind die Tribünen... wtf die sind nicht mal irgendwie in der Nähe !?!?!?!
  6. Terrain heigths setzen

    Richtig... in meinem Fall ist es halt 64x64 groß und immer gleich - deshalb so fixiert.
  7. Hallo, irgendwas hats in meinem Code und ich finde den Fehler nicht... ich instanziere diverse Objekte per Script. Davor erstelle ich ein Terrain. void CreateTrackObject(GameObject prefab, float x_clamped, float y_clamped, float rotation, bool TerrainRotation, float worldSize, string tagdecl) { GameObject trackObject = Instantiate(prefab, new Vector3(x_clamped, 50, y_clamped), Quaternion.identity); trackObject.transform.parent = trackobjectsParent.transform; trackObject.tag = tagdecl; RaycastHit hit; float distanceToGround = 0; if (Physics.Raycast(trackObject.transform.position, Vector3.down, out hit)) { distanceToGround = hit.distance; Vector3 incomingVec = hit.point - trackObject.transform.position; Vector3 reflectVec = Vector3.Reflect(incomingVec, hit.normal); Debug.DrawLine(trackObject.transform.position, hit.point, Color.red, 30, false); //show-spawn line Debug.DrawRay(hit.point, reflectVec, Color.green, 30, false); //show reflection-line trackObject.transform.position = hit.point; if (TerrainRotation == true) { trackObject.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal); } } //maybe this line should be moved to a higher line-position after rayhasthit hit trackObject.transform.localEulerAngles = new Vector3(0, rotation, 0); } An sich funktioniert das soweit ganz gut....aber in manchen Fällen fliegen die Objekte in der Luft obwohl NICHTS in der Nähe ist was kollidieren kann. Siehe Foto. Woran kann das liegen? Ich habe auch schon versucht Objekten den Layer "IgnoreRaycast" zu geben um zu verhindern das sich die gegenseitig im Weg sind -> hilft nix. lg
  8. Ja, tust du glaube ich. Ahhh okay. Dictionary lautet das Stichwort. Ich lese mich mal ein. danke
  9. Folgender Code: using UnityEngine; using UnityEngine.UI; namespace TheBestGame { // Utility class for swapping the sprite of a UI Image between two predefined values. public class SpriteSwapper : MonoBehaviour { public Sprite enabledSprite; public Sprite disabledSprite; private bool m_swapped = false; private Image m_image; public Text filesize; public Image TimeIcon; public Text fastestLap; public void Awake() { m_image = GetComponent<Image>(); } public void SwapSprite() { if (m_swapped) { m_swapped = false; m_image.sprite = disabledSprite; filesize.color = new Color(84, 84, 84, 255); TimeIcon.color = new Color(84, 84, 84, 255); fastestLap.color = new Color(84, 84, 84, 255); } else { m_swapped = true; m_image.sprite = enabledSprite; // change colors for track-infos filesize.color = new Color(255, 255, 255); TimeIcon.color = new Color(255, 255, 255); fastestLap.color = new Color(255, 255, 255); } } } } Auf weiß wechseln geht einwandfrei..... (255,255,255) zurück auf dunkelgrau nicht mehr. Hat jemand eine Idee wieso!? Der verbundene Slider (Sprites) arbeitet tadellos. dH die Werte werden alle korrekt übergeben. danke
  10. Hallo, ich verwende eine ScrollView mit Rect-Transforms in einem Grid Layout. Das instanziere ich on the fly weil ich eine Dateiliste auslese und damit ausgebe. Funktioniert soweit alles wie ich es will. Jetzt möchte ich aber eine "Datei-Auswahlliste" erzeugen. Dazu habe ich einen Slider eingebaut siehe Anhang. Soweit so gut. Ich verwende einen "ItemController" als Schnittstelle. Jetzt möchte ich gerne die gewählten Files "speichern", damit ich sie beim szenen-wechsel dann aus dem array entsprechend laden kann. Wie gehe ich das am effizientesten an? Die "Dateinamen" in einem Array ablegen? Wenn ja, aufgrund der Möglichkeit des ein/aus muss ich dann auch ständig aus dem Array-suchen/löschen/hinzufügen.... das erscheint mir irgendwie unperformant. Was wiederrum egal ist, da der User sowieso nur 1x diese Auswahl trifft vor dem Start. Trotzdem glaube ich es geht es irgendwie effizienter. Ich hole mir indem ListController ja schon die Dateiliste per: FileInfo[] info = dir.GetFiles("*.track"); foreach (FileInfo f in info) { } Das könnte ich ja irgendwie gleich nutzen. danke
  11. Danke! Jetzt funktioniert es wunderprächtig. Wird gemacht in Zukunft.
  12. Terrain heigths setzen

    Hab dir jetzt schnell meine Funktion rausgesucht: public float[,] resetheights = new float[64, 64]; public void ResetHeights() // FOR TESTING, reset to flat terrain { int x; int z; for (z = 0; z < terrain.terrainData.heightmapHeight; z++) { for (x = 0; x < terrain.terrainData.heightmapWidth; x++) { resetheights[z, x] = 0; } } terrain.terrainData.SetHeights(0, 0, resetheights); } lg
  13. OT: Mhhh, soll ich meinen ersten Beitrag am besten einfach editieren und die Infos hinzufügen? transform.localScale = distance.magnitude; // statt Vector3.Distance wirft: Severity Code Description Project File Line Suppression State Error CS0029 Cannot implicitly convert type 'float' to 'UnityEngine.Vector3' Und "Script" habe ich keinen aus einem einzelnen Gameobjekt. Ich erstelle hunderte Objekte per Script auf einem Terrain. Und hier geht es um "Wände" sozusagen die dann instanziert werden. An sich hat mein Code funktioniert Jedoch habe ich schon einen Bug gefunden. Code funktioniert nicht mehr wenn X0 und X1 andersrum sind. Also die Werte +/- umgedreht sind. Dann stimmt nix mehr ^^ Edit: hat nichts mit den Werten zu tun, sondern damit dass das Scaling nicht mehr stimmt, sobald da eine Rotation reinkommt....hmpf. Magnitude scheint hier tatsächlich die richtigere Wahl zu sein was ich bis jetzt gelesen habe. Edit2: Ok, die Ursache des Bugs kommt schon aus den Rohdaten. Die 2D-Koordinaten (x0/y0 und x1/y1) gibt es in beide Richtungen, da offensichtlich die besagte Wand von beiden Richtungen gezeichnet/gespeichert werden konnte. Somit stimmen die Formeln nicht mehr und die Berechnungen gehören irgendwo neutralisiert.
  14. Okay.... gelöst: //set line ends to vectors Vector3 vecA = new Vector3(data.line[i].x, 40, data.line[i].y); Vector3 vecB = new Vector3(data.line[i].x1, 40, data.line[i].y1); //get our midway point Vector3 midPointAB = (vecA + vecB) / 2f; //get the direction between the two transforms --> Vector3 dirAB = (vecB - vecA).normalized; // get the rotation of the line //Vector3 relativePos = vecA - transform.position; Quaternion rotationAB = Quaternion.LookRotation(dirAB); // get the length of the line Vector3 abLength = vecB - vecA; line.transform.localPosition = midPointAB; line.transform.rotation = rotationAB; // set the new length (scaling size from cube prefab is 1/80/1/) line.transform.localScale = new Vector3(line.transform.localScale.x, line.transform.localScale.y, abLength.z);
×