Jump to content
Unity Insider Forum

Singular

Members
  • Content Count

    21
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Singular

  • Rank
    Member
  • Birthday 12/08/1987

Profile Information

  • Gender
    Male
  • Location
    Königswinter

Recent Profile Visitors

44 profile views
  1. Gibt es ein Tutorial wie man ordentlich eine UI erstellt? Ich habe in meinem Spiel leider mehrere Menüs durch die man sich durchklicken muss und ich glaube, dass ich mir das alles etwas schwerer mache als es eigentlich sein müsste. Unten im Bereich für die Video Tutorials gibt es zwar Einträge zu dem Thema aber leider sind die Links zu den Videos bzw die Videos selbst weg.
  2. Dieser Gegner wurde von den anderen soweit runter gedrückt, (normalerweise ist alles auf y = 3) dass er für den Spieler nicht mehr erreichbar ist. Da die Schüsse auch auf der Ebene bleiben kann der Gegner auch den Spieler nicht mehr abschießen aber der Sinn ist ein anderer. Ich habe auch mal gerade versucht, dass ich die Bewegung und Rotation in Y Richtung wieder zulasse. Das gibt aber wahrscheinlich das Script nicht her deswegen macht das alles nur noch schlimmer xD.
  3. Mmmh... okay dann schau ich mal, was ich da zusammen bekomme. Wie gesagt, Rotation und Position sind auf der Y-Achse von Seite von Unity im Inspektor ausgeschaltet. Mein KI drückt sich aber, wenn sie zusammenstoßt aber trotzdem hoch oder runter. Zum Code: Hier weiß ich jetzt nicht genau, was du da brauchen könntest. Hier mal das Skript für meine KI, die die Bewegung steuert. (Ein Hinweis vorneweg: Das ist mein erster versuch eine KI zu entwickeln! Das sie nicht perfekt ist, ist mir bewusst. Ich bin aber schon stolz auf mich, dass ich es alleine geschafft habe. Sie läuft nicht super aber sie schießt auf den Spieler und Bewegt sich so wie ich es wollte (meistens zumindest). Das hier einiges zu verbessern ist ist mir absolut klar) void Start() { v1 = transform.position; player = GameObject.Find("Player"); pltr = player.GetComponent<Transform>(); rb = GetComponent<Rigidbody>(); NewWanderpoint(); InvokeRepeating("GeschwindigkeitMesser", 0.1f, 0.1f); } void Update() { MachKaputt(); //Nur zum Testen! Wiederlöschen sobald nicht mehr benötigt!!! if (player == null) { goto Finish; } // Spieler ist geflohen und außer Reichweite --> zur letzen bekannten stelle fliegen float dist = Vector3.Distance(pltr.position, transform.position); if (playerInSight == true) { if (dist > reichweite) { wanderpoint = pltr.position; } } //zunächst Prüfen ob Spieler in Sicht ist. if(dist<= reichweite) { playerInSight = true; } else { playerInSight = false; } if (playerInSight == false) { //Patroulie fliegen float distwanderpoint = Vector3.Distance(wanderpoint, transform.position); if (distwanderpoint <= 10) //Wanderpoint erreicht { NewWanderpoint(); } else //Wanderpoint noch nicht erreicht { //Weiter auf Wanderpoint zufliegen bzw. drehen Vector3 v3 = wanderpoint - transform.position; //prüfen in welcher Richtung das Ziel ist Vector3 newDirection = Vector3.RotateTowards(transform.forward, v3, turnspeed * Time.deltaTime, 0f); transform.rotation = Quaternion.LookRotation(newDirection); rb.velocity = transform.forward * speed; } } else //(playerInSight == true) { if (dist <= kampfreichweite) //Spieler ist nah genug! { Angriff(); if (dist <= kampfreichweiteclose) { rb.velocity = transform.forward * 0; } else { rb.velocity = transform.forward * kampfspeednear; } Vector3 v3 = pltr.position - transform.position; //prüfen in welcher Richtung das Ziel ist Vector3 newDirection = Vector3.RotateTowards(transform.forward, v3, turnspeed * Time.deltaTime, 0f); transform.rotation = Quaternion.LookRotation(newDirection); } else { Vector3 v3 = pltr.position - transform.position; //prüfen in welcher Richtung das Ziel ist Vector3 newDirection = Vector3.RotateTowards(transform.forward, v3, turnspeed * Time.deltaTime, 0f); transform.rotation = Quaternion.LookRotation(newDirection); //Auf Spieler zufliegen rb.velocity = transform.forward * kampfspeedfar; } } if(fighttimer >= feuergeschwindigkeit) { fighttimer = feuergeschwindigkeit; } else { fighttimer += Time.deltaTime; } Finish:; } //Update Ende void NewWanderpoint() { float rndXmin = pltr.position.x - wanderrange; float rndXmax = pltr.position.x + wanderrange; float rndZmin = pltr.position.z - wanderrange; float rndZmax = pltr.position.z + wanderrange; wanderpoint.x = (Random.Range(rndXmin, rndXmax)); wanderpoint.y = 3; wanderpoint.z = (Random.Range(rndZmin, rndZmax)); } Wie gesagt, dass ist jetzt nur das zur Bewegung. Da kommen noch ein paar mehr Methoden die aber nicht auf die Bewegung Einfluss nehmen. Brauchst du sonst noch etwas?
  4. Ja, das weiß man leider nicht im voraus. Viel Erfahrungsberichte finde ich leider nicht über ils. Bzw auf der einen Seite hauptsächlich positive (4 und 5 Sterne) und auf der nächsten Seite nur extrem schlechte Bewertungen (1 Stern) Deswegen meine Frage. Aber dann schau ich nochmal weiter und hole mir hier aus dem Forum Hilfe wenn ich sie brauche. Dankeschön.
  5. Ich habe folgendes Problem. Ich habe in meinem 2D Spiel was in einer 3D Umgebung ist allen Objekten die Rotation und auch die Position auf der Y Ebene festgelegt. Es kommt aber immer mal wieder vor, dass mein Spieler oder auch Gegner durch Kollisionen nach oben rutschen. Teilweise sogar nicht gerade knapp. Ein Gegner der von der Position y5 auf den Spieler schießt der auf y3 ist ist natürlich schwer zu besiegen... Ich könnte zwar ein script schreiben, dass wenn ein Objekt auf Y höher oder tiefer als 3 wieder zurück gesetzt wird aber das kann ja nicht der Sinn seid.
  6. Du bietest Kurse an? Andererseits hätte natürlich gerne einen Abschluss / Zertifikat o.ä. womit ich mich dann auch bewerben kann.
  7. Naja Problem ist mal so neben bei woanders aufstocken ist schlecht. Gersde bei dem Preis. Da bin ich bei ils gerne mal 2.500 Los für das ganze Studium. Dann "mal neben bei" das gleiche woanders auch noch zu machen ist schwierig.
  8. Sorry das ich mich nicht mehr gemeldet habe. Also, mit Raycast hab ich mich jetzt noch nicht beschäftigen können aber dank deiner Tipps habe ich meinen Code ordentlich entschlacken können. ein Script konnte ich direkt löschen und zwei weitere brauche ich nicht mal mehr erst zu schreiben.
  9. Push: Hätte ich auch Interesse dran.
  10. Vorne weg: ich weiß nicht genau wo dieses Thema am besten passen würde. Falls ein anderer Chat besser passt bitte verschieben. Jetzt zu meiner Frage. Ich spiele im Moment mit dem Gedanken neben dem Job (und den Kindern) ein Fernstudium anzufangen. ils bietet ein Studium als 3D Spieleentwickler mit Unity an. Hat da jemand vielleicht schon mit Erfahrung gemacht oder kann mir eine andere Institution empfehlen? Danke im voraus.
  11. Ich werde es mal glaube ich lassen jeden einzelnen Punkte zu zitieren 🤪 rb.velocity wurde in meinem Kurs nie angesprochen. Damit sollte es gehen. Die Übergabe Methode klingt gut. Die werde ich denke ich nachher mal ausprobieren. Die Laser sind nicht gerade "Blitzschnell" aber sie sind nach ca 2 Sekunden aus dem Bild, weswegen sie auch nach 5 Sekunden zerstört werden wenn sie nichts getroffen haben. Mit Raycasts kenne ich mich (noch) nicht aus. Das werde ich mir gleich mal Anschauen. Klingt nach einer gesunden sauberen Alternative.
  12. Okay, ich habe den Fehler gefunden und er war doch im Script. Wobei ich nicht verstehe, warum es nicht geklappt hat. Ich habe vergessen GetComponent für mov in die StartMethode einzutragen. Deswegen war dieser Wert 0. Da ich ihn aber +1 gerechnet habe (um zu verhindern, dass er *0 gerechnet wird) ist scheinbar am ende des Tages doch irgendwie 0 herausgekommen. Mit der AddForce habe ich jedoch ein Problem. Die Kugel steht erst einmal in der Luft bis sie die Geschwindigkeit bekommt die sie haben soll. Auch die einzelnen "ForceModes" helfen da leider nicht. Ich habe es meiner meinung nach aber etwas unschön gelöst, dass de Collider erst etwas später aktiviert wird. Gibt es vielleicht die Möglichkeit, dass ich bei der Instatiate Methode noch weitere Werte übergeben kann. In meinem Fall würde ich dem Laser das GameObject übergeben welches diesen Laser erstellt hat und dieses GameObject soll bei Collision ignoriert werden. Oder gibt es vielleicht andere Möglichkeiten?
  13. Tatsache. Meine Raketen und der Laser bewegen sich über transform.Translate. So jetzt stehe ich vor dem nächsten Problem... mein Laser bewegt sich keinen milimeter... Ich habe sogar das Script für "AddForce" von der Offiziellen Unity Seite übernommen. Nix. Dein erster Gedanke ist deswegen: Klar er hat den rb auf Kinematisch gestellt... nö! Und die Masse ist auch auf 1. public class Kugeln : MonoBehaviour { Movement mov; private float playerSpeed; public float bulletSpeed = 20f; private Rigidbody rb; public int schaden = 1; public int rumpfschaden = 0; public int schildschaden = 1; void Start() { rb = GetComponent<Rigidbody>(); playerSpeed = mov.speed + 1f; Destroy(gameObject, 5f); } void FixedUpdate() { rb.AddForce(transform.forward * bulletSpeed * playerSpeed); //transform.Translate(tr.forward * bulletSpeed * speedie * Time.deltaTime, Space.World); } Ich glaube nicht, dass es am Script liegt. Eher an den einstellungen am Rigidbody. Ich habe aber sogar neue Elemente eingefügt denen das Script und einen RB gegeben und es passiert nichts. Das einzige was ich ändere, dass sie keine Gravitation haben. Wenn die dafür aber notwendig ist, dann brauche ich eine andere Lösung. Ein positives hat es ... sie Kollidieren jetzt mit allem was sie sollen und machen auch Schaden! :D Aber stehende Raketen sind nicht so geil. Das sind dan eher Minen. Die wirft man aber eher selten VOR seinem Schiff raus xD.
  14. Mein Script sieht jetzt so aus: public class Kugeln : MonoBehaviour { [...] void OnCollisionEnter(Collision collision) { var health = collision.gameObject.GetComponent<LebenspunkteSchaden>(); if (health) { Debug.Log("Kollision erkannt Player/Enemy"); health.IncomingDamage(schaden, schildschaden, rumpfschaden); Destroy(gameObject); } else { Debug.Log("Kollision erkannt Planet/Munition"); Destroy(gameObject); } } } Sowohl Spieler als auch Munition und Planeten und Gegner haben alle einen Collider. Der Spieler hat einen MeshCollider, die Planeten und Gegner einen SphereCollider, die Munitionen einen CapsuleCollider. Wie gesagt, der Spieler kann auch mit allem anderen Kollidieren.
  15. Moment, bin ich da jetzt auf einem guten Weg oder nicht? Ich habe ein script für beide Munitionsarten (bzw es sind zwei unterschiedliche, da der Laser nur geradeaus fliegt und die Rakete ihr Ziel verfolgt wenn der/bzw ein Gegner in Reichweite ist) beide greifen aber auf das Script ihres Ziels zu und sagen dem Gegner, dass er Schaden nehmen soll. Übergeben werden dann wie du auch schon geschrieben hast die drei Schadensarten. (baseDamage, shieldDamage, hullDamage) Meine Munition hat das Script. Mein Healthscript bzw ich habe es LebenspunkteUndSchaden genannt, berechnet selbst ob der Spieler bzw Gegener zerstört wird. Es müssen ja die LeP erst auf Null fallen und dafür reicht nicht eine Rakete oder ein Laser. Gut das du das sagst^^. Das das nicht Optimal ist habe ich mir schon gedacht, wusste aber nicht, wie ich es sonst machen soll, da mein Kurs (auf dem derzeitigen stand) nur diesen Vergleich nutzt. Verstehe ich deinen Code richtig? var health = collision.gameObject.GetComponent<Health>(); // das Healthscript von dem Object, mit dem die Kollision stattgefunden hat wird in Health gespeichert. if (health) // es wird geprüft ob etwas in health gespeichert wurde (also != null ist) { health.ApplyDamage(baseDamage, shieldDamage, hullDamage); // das ist klar. //muss hier nicht noch ein "health = null" hin da ansonsten bei einer anderen Kollision wieder das selbe script, was ja noch in health drin ist aufgerufen wird? //oder wird "null" gespeichert, wenn das Objekt kein solches Script hat? } Edit: Achso, ich habe die Änderung übernommen. Nur mein Spieler selbst nimmt Schaden. Und auch nur bei ihm wird auch die Kollision erkannt. Die Schüsse fliegen aber weiterhin durch die Gegner und Planeten durch. Anders herum kann mein Spieler aber mit ihnen Kollidieren. (Ich habe natürlich noch ein "Destroy(gameObject);" in die if Abfrage eingefügt und auch ein else mit Destoy.
×
×
  • Create New...