Jump to content
Unity Insider Forum

All Activity

This stream auto-updates     

  1. Yesterday
  2. L.Tester

    LookAt mit allen Extras benötigt, nur Wie?

    N'Abend Forum, hier der ThreadStarter. Wenn man bedenkt, das dieses Problem nur ein "klitzekleines" Hindernis sein sollte, welches ich "mal eben" lösen wollte .... Also, eine komplette Lösung gibt es noch nicht, dazu hatte ich an diesem Wochenende auch zu wenig Zeit. ABER, ein Teilerfolg: Ein Problem ist ja, das ich eine Rotations-ÄNDERUNG brauche. Das entspricht also Rotation2 - Rotation1 bzw. Quaternion2 - Quaternion1. private Quaternion QDifference(Quaternion a, Quaternion b) { return Quaternion.Inverse(a) * b; } Ich glaube, da muss ich noch ein wenig umstellen, denn in LateUpdate() musste ich auch noch was umstellen, das könnte sonst zu Verwirrung führen. Hier habe ich nur schnell getestet ob das Teilproblem so gelöst werden kann : private void LateUpdate() { //eyes + neckJoint haben die selbe Position Vector3 lookDirectionWorld = target.position - eyes.position; Vector3 fromVector = eyes.forward; Vector3 toVector = lookDirectionWorld; Quaternion rotation1 = Quaternion.LookRotation(lookDirectionWorld, Vector3.up); Quaternion rotation2 = QDifference(neckJoint.rotation, rotation1); neckJoint.rotation = neckJoint.rotation * rotation2; Debug.DrawRay(eyes.position, eyes.forward * 31, Color.cyan); } Klappt! Ich werde jetzt Schluss machen, nächste Woche geht es weiter. Ich denke, ihr könnt euch zurücklehnen und warten, der Rest sollte doch ein Klacks sein ... Gruß von Lutz. Hallo @malzbie, oder auf Youtube: @MrMalzbie, ich habe Dein Video nebenbei laufen lassen : Nein, ich benutze kein Humanoid-Animation-System. Ich glaube, ich könnte es ähnlich wie Du über OnAnimatorIK() lösen. Jetzt möchte ich aber erstmal bei der Manipulation der Animation in LateUpdate() bleiben. Ich glaube, das ich damit auskomme: Ausserdem: Ich lerne auch noch, mit Quaternions umzugehen - zumindest im Rahmen von Unity, die mathematischen Grundlagen überfordern mich etwas.
  3. Velocity setzen kannst du durchaus in Update. Das Problem ist, dass du einfach nur schaust, ob ein Finger auf dem Display ist. Kannst einfach gedrückt halten, dann springst fliegst du ewig weiter. Das Problem löst du, indem du schaust, ob du überhaupt auf dem Boden stehst. Nur dann sollte man springen können.
  4. Moin, Ich arbeite grad an einem Android Spiel. Habe ein einfaches Jumpsystem hinzugefügt, aber als ich es testete war es auf meinem Handy nicht wie auf meinem Pc. Und zwar Sprang der Charakter viel höher. Weiß jemand wie man dieses Problem lösen kann? Der Code: void Update() { if (Input.GetButtonDown("Fire1") || Input.touchCount > 0) { rb.velocity = new Vector2(jumpLeft, 1 * jumpforce); } } Hab es schon in fixed update gamcht, aber dann reagiert er teilweise nicht, was aber extrem wichtig ist. Schonmal vielen Dank.
  5. Last week
  6. Bradley

    Space Opera

    Der erste Testlauf einer Kartengenerierung mit PerlinNoise ist erfolgreich abgeschlossen. Etwas mehr fein Tuning beim Algorithmus und mehr als 3 Kartenfeldtypen sollten es aber schon sein sonst ist das nicht sehr ansehnlich. Aber immerhin, es funktioniert und geht ins nächste NightlyBuild.
  7. Wenn es nicht da liegen soll und dann wohl auch nicht liegt, dann kannst du in der Start auch nicht über gameObjct.GetComponent<> versuchen eine Referenz zu bilden. Verstehst du das? gameObject ist das GameObject auf dem das Script liegt. Also quasi der Vatter! Hat dieses GameObject kein Textmesh, kann es auch nicht mit GetComponent gefunden werden, denn es ist ja keine Textmesh Komponente auf dem Gameobject. Und weil das so ist, wird deine Variable nach dem Versuch null sein! Egal ob sie vorher eine Referent zum Textmesh hatte. Leg einfach dein Textmesh im Inspector auf den Slot vom Script und nimm die Zeile in der Start raus. Schon wird's gehen.
  8. Ja genau das ist mein Problem. Das Script soll nicht auf dem Gameobject liegen Die Exception wird durch diese Zeile ausgelöst (hätte ich dazu schreiben sollen) : WaveNummer.text= "Wave" + I_nextWave;
  9. Deine Fehlermeldung bedeutet IMMER dass auf etwas zugegriffen werden soll was aber nicht bekannt ist. Unity schmeißt dir immer auch die Zeile im Code raus, wo dieser Zugriff stattfindet. Da kann man also leicht erkennen, um welches Objekt oder Komponente es sich handelt. Wenn dein Codebeispiel nur dieses TextMeshProGUI ansprechen will, dann ist es dieses auch. Komisch ist jetzt an deinem Beispiel, dass du oben ja eine public Variable bildest, wo du über den Inspector einfach das Textmesh rein legen könntest. In der Start Methode versuchst du aber dann eine Referenz zu bilden, indem du davon aus gehst, dass das Textmesh genau auf diesem GameObject liegt, wo auch dieses Script liegt. Aber da wird es wohl nicht liegen. Ja und selbst wenn du via Inspector das Textmesh der Variable zugewiesen hast, es aber nicht auf diesem GO liegt, würdest du in der Start die Variable WaveNumber überschreiben. Und zwar mit "null". WaveNummer hätte jetzt also keine Referenz und deswegen kommt der Fehler. Fazit: Dein Textmesh und dein Script liegen nicht auf dem gleichen GameObject!
  10. Hallöchen Liebes UnityForum, ich habe ein Problemchen mit TextMeshPro.Unzwar möchte ich das UI Text Element von TextMeshPro in einem Script benutzen das meine Wellen an Gegner zählt und an einem Gameobject gebunden ist.Nun habe ich schon das gefühlt halbe Internet durchforstet und habe nichts gefunden um das Problem zu lösen. Vielleicht könnt ihr mir ja helfen . Ist wahrscheinlich etwas komplett Banales. public TextMeshProUGUI WaveNummer; private void Start() { F_waveCountdown = F_timeBetweenWaves; WaveNummer = gameObject.GetComponent<TextMeshProUGUI>(); } void Update() { WaveNummer.text= "Wave" + I_nextWave; Das ist der relevante Code. Ich habe natürlich das package TMPro implementiert.
  11. Sascha

    Daten zwischen Spielern austauschen

    Diese Frage ist viel zu unspezifisch. "Daten austauschen" kann alles sein von Highscores bis zu Echtzeit-Multiplayer über Internet. Da du dir den NetworkManager angeschaut hast, nehme ich an, du willst Multiplayer über Internet haben. Da hat Unity selbst im Moment nur UNet, das, wie du richtig festgestellt hast, nicht mehr weiterentwickelt wird. Unity arbeitet an einem neuen System, aber keine Ahnung, ab wann das was taugt. Ansonsten gibt's nen Haufen Plugins... Photon, Bolt, wie sie nicht alle heißen. Die haben alle so ihre Vor- und Nachteile, und natürlich haben die so ihre Modelle, wie sie Geld verdienen. Wenn du allerdings selber den Server hostest, kannst du auf deren Clouds verzichten. Das hilft schon einmal preislich.
  12. Hallo Forum, wie kann man eigentlich Daten zwischen den Spielern/Benutzern des Unity Spiels austauschen(kostenlos)? Network Manager funktioniert bei mir nicht und soll laut Manual sowieso bald entfernt werden.
  13. Hallo. Vor einiger Zeit habe ich ein Spiel in Unity Erschauen welches Zufällig Kisten auf einer Großen Karte Spawnt diese kann man einsammeln und erhält dafür seine Belohnungen. wenn man nun diese Kisten eingesammelt hat sind sie weg und Spawnen nach einem 3 Minuten Counter wieder neu auf der Karte. Nun ist das Problem wenn ich die App einfach neustarte die Kisten sofort wieder da sind und man denn 3 Minuten Countdown einfach überspringen kann. Gibt es eine Möglichkeit in meine PickUpChest klasse die eingesammelte Kiste abzuspeichern und sollange sie abgespiechert ist nichtmehr erscheint und dieses wieder mit meinem 3 Minuten Countdown zu reseten. Also z.b in der PickupChest Klasse beim einsammeln Abspeichern mit dem Countdown die Abspeicherung löschen und wahrscheinlich brauche ich noch eine Start klasse die Abfragt ob die Kisten momentan gespeichert ist oder nicht. using UnityEngine; public class PickupCoins : MonoBehaviour { private void OnMouseDown() { var Cs = GameObject.Find("Main Camera").GetComponent<Cs>(); Cs.IncreaseLevel(); Destroy(gameObject); //Zum Beispiel Objekt abspeichern } } using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.UI; public class UpdateTime : MonoBehaviour { float currentTime = 0f; float startingTime = 180f; [SerializeField] Text countdownText; void Start() { currentTime = startingTime; } void Update() { currentTime -= 1 * Time.deltaTime; countdownText.text = currentTime.ToString(); if (currentTime <= 0) { currentTime = 0; currentTime = startingTime; Application.LoadLevel(1); //Bissher dafür gedacht die Sceene einfach neuzustarten da die Objekte dann resetet werden //Reseten von Objekt } } } über eine Antwort würde ich mich Freunen.
  14. Hallo. Zunächst vielen Dank für deine Hilfe. Dass es nur auf dem Tablet nicht funktioniert verwundert mich ja am meisten. Im Editor erhielt ich keine Fehlermeldungen. Ich habe zusätzlich zu dem Bluestacks-Emulator noch den von Google benutzt, auch dort funktioniert es. Außerdem installierte ich eine LTS-Version von Unity. Bevor ich deine Antwort las bin ich auch darauf gekommen, Raycast durch Physics2D.OverlapBoxAll zu ersetzen. Jetzt funktioniert es auch auf dem echten Gerät. Endlich. Es wird wohl so sein, dass ich den Rigidbody falsch einsetze oder ich mir etwas anderes davon versprach. Du hast mir hier einige Anregungen gegeben, ich werde mir das alles in Ruhe anschauen. Danke sehr.
  15. Bradley

    Space Opera

    Space Opera | Phase 0 Einer meiner vielen Fehler bei der Entwicklung von Space Opera ist sicherlich das es keinen wirklichen Grund gab das ganze überhaupt zu spielen. Ich versuche jetzt diesen Kritik Punkt zu lösen in dem ich quasi zum ersten Mal etwas Story mit rein bringen. Der Spieler erhält also e nach diesem Hinweis aus dem Freundeskreis, habe ich etwas versucht dagegen zu unternehmen. In Form eines Dialoge – ebenfalls etwas neues – gibt man den Spieler ein Ziel zu dem er fliegen soll. Der noch unfertige Dialog kann bereits auf dem Nightlybuild getestet werden. Sobald alle Ziele der Phase 0 abgeschlossen sind, wird auch ein Release für Win64 erzeugt. Dank Unity wäre auch Mac und Linux denkbar wenn das jemand wünscht. Nightlybuild: http://www.bradley-labs.de/download/SO/index.html Ziele: http://bradley-labs.de/ziele/
  16. Schon seltsam, dass es auf dem Pad nicht geht... Bekommst du vielleicht eine Meldung in der Console, wnn du das Spiel im Editor testest? Wenn ja, dann könnte das der Unterschied sein, denn im Editor funktioniert vieles noch, obwohl es Fehler gibt. Im Build geht's dann meist nicht und kann sogar zum Abbruch führen. Wenn du keine Meldung siehst, sollte ja alles in Ordnung sein und dann weiß ich echt nicht weiter. Könnte ja auch ein Bug in Unity sein. Dass ein RB natürlich einen anderen RB verschiebt oder eben an einem Collider hängen bleibt, ist klar denn das soll er ja auch tun. Wenn du jetzt auf mehreren Objekten RB's drauf hast, die sich nicht beeinflussen sollen, dann empfehle ich dir die Kollision über Layer zu steuern. Du kannst dann in der Layer Colission Matrix einstellen, welche Layer kollidieren dürfen und welche nicht. So könnte in deinem Spiel der Player (der hat ja bestimmt einen RB) dem Layer "Player" zugewiesen sein. Aufnehmbare Dinge, wie z.B. Münzen, die von Oben runter fallen, hätten dann den Layer "Loot". Jetzt stellst du in der Matrix ein, dass diese beiden Layer (Loot und Player) eben nicht kollidieren dürfen. Dafür nimmst du am entsprechenden Schnittpunkt einfach den Haken raus. Das Loot würde jetzt mit allen Dingen ausser dem Player kollidieren. https://docs.unity3d.com/Manual/LayerBasedCollision.html Im Script kannst du aber immer noch gegen diesen Loot Layer testen, denn eigentlich haben alle Physics Funktionen auch einen Parameter, mit dem du auf Layer testen kannst. Bei 3D heisst das evtl. anders als bei 3D, aber es ist alles sehr ähnlich. Fürs Auswerten bietet sich OverlapCircle an, weil dann hast du einen gewissen Radius und nicht nur einen Punkt im Raum. https://docs.unity3d.com/ScriptReference/Physics2D.OverlapCircle.html Den nötige Parameter ist : https://docs.unity3d.com/ScriptReference/ContactFilter2D.html
  17. Sascha

    Collider buggt sich durch Terrain

    Nö, machen wir bei uns nicht.
  18. KaBau

    Collider buggt sich durch Terrain

    Zum Thema der verschiedenen Bewegungsmöglichkeiten hat @malzbie ein tolles Video erstellt: Ist zwar schon etwas älter, aber im Grunde noch immer aktuell. Hier wird auch auf das eingegangen, was @Sascha oben zu den RB geschrieben hat.
  19. Slayer

    Neues Terrainhandling?

    Aha okay. Ich mag ein großes Terrain weniger da ich finde das man da zu wenig ins feine mehr gehen kann. Mehr als 2000 würde ich daher nicht machen. Alles drum herum würde ich nachladen. Ich gestallten mir meist eine heightmap für die komplette map. Diese Teile ich dann in die terrainanzahl auf und importiere diese dann. So habe ich einen Grundstock. Ich lasse dann auch immer nur die Terrains in der scene die ich gerade bearbeite. Im Spiel überprüfe ich immer die character position. Dann kann ich immer das Terrain auf dem er sich befindet + die darum herum laden. Alles andere braucht man nicht. Genauso auch dann Objekte. So kann man recht große maps erstellen. Die Arbeit ist diese dann natürlich zu gestallten. Es gibt zwar dafür Terrain Tools, aber meist spiele ich da Manuel herum.
  20. Peanut

    flugbahn berechnen 2D

    Ich denke man muss nur diese Zeile anpassen(wie du ja selbst schon vermutet hast) : y1 = ballPos.y + shotForce.y * Time.fixedDeltaTime * (dotSeparation * k + dotShift) - (-Physics2D.gravity.y / 2f * Time.fixedDeltaTime * Time.fixedDeltaTime * (dotSeparation * k + dotShift) * ( Hast du die Zeile selber geschrieben? Weil Time.deltaTime*Time.deltaTime macht für mich irgendwie wie keinen Sinn :P(falls dus erklären kannst) Ich glaube du musst in der for Schleife mit einem If-Statement unterscheiden ob der Ball prositive rb2d.velocity.y hat oder eine negative und jenachdem welcher Fall eintritt du die yAxis der Dots anders berechnen musst.
  21. Timbo3

    Collider buggt sich durch Terrain

    Ok danke. Kann man Themen auch irgendwie als gelöst markieren?
  22. Peanut

    Neues Terrainhandling?

    Hab noch nix davon gehört das es sowas Unity intern gibt. Warum benutzt du den mehrere Terrains? Kannst du nicht ein Riesiges machen? Wie gehst du den damit um? LG Peanut
  23. Peanut

    Collider buggt sich durch Terrain

    Btw kannst du statt immer Input.GetKey(w), Input.GetKey(s) etc. zu benutzen einfach mit Input.GetAxis(""Vertical") und das selbe für Horizontal. Finde so wird der Code viel übersichtlicher und es geht beim zweiten mal schneller. Kannst es ja mal nachlesen wen du willst https://docs.unity3d.com/ScriptReference/Input.GetAxis.html Gibt auch genug Youtube Tutorials dafür.
  24. Hallo, >>... nie genau auf der selben Position ...<< Sehr guter Vorschlag, obwohl naheliegend, wäre ich darauf nicht gekommen. Ich habe den Raycast ohne Längenangabe durchführen lassen. Ich habe den Boxcollider des Loot-Objekts extrem vergrößert. Ich habe nochmals die Positionierung der Objekte überprüft. Als Kontrollinstrument habe ich mir vom laufenden Programm die Positionen der Objekte ausgeben lassen, sie befinden sich alle auf den ihnen zugedachten. Und es funktioniert auf dem Tablet immer noch nicht, sonst überall. Die Kollision mit den Enemy-Objekt findet statt, nur bei den Loot-Elementen nicht. Hast du noch eine Idee, woran es scheitern könnte? Ich habe Probleme mit dem Rigidbody, deshalb teste ich es jetzt mal ohne. Beim Rigidbody verschiebt sich mein Objekt immer bei Kontakt mit anderen. Ich weiss nicht, wie ich das in den Griff bekommen kann, ich finde dazu auch nichts im Netz. Vielleicht hast du ja eine Anregung dazu, einzelne Stichworte würden eventuell schon helfen. Danke.
  1. Load more activity

Announcements

Hy, wir programmieren für dich Apps(Android & iOS):

Weiterleitung zum Entwickler "daubit"



×