Jump to content
Unity Insider Forum

Aquana

Members
  • Content count

    14
  • Joined

  • Last visited

  • Days Won

    1

Aquana last won the day on April 2

Aquana had the most liked content!

Community Reputation

3 Neutral

About Aquana

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Aquana

    Kugel Schiest nicht

    Achso. Danke.
  2. Aquana

    Kugel Schiest nicht

    Hallo ich habe da ein Problem. Meine Figur soll einfach eine Kugel abfeuern. Das mach sie auch im allgemeinen. Doch ich habe festgestellt das wenn ich links und vorne gleichzeitig drücke, kein Schuss erfolgt. Auch wenn ich rechts und hinten drücke kommt keine Schuss. Alle Kombination funktionieren sonst. Ich verstehe einfach nicht warum es so nicht geht. Hier ist das einfache Script. public Transform pistole; public GameObject Kugel; void FixedUpdate () { if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(Vector3.forward*2*Time.deltaTime); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(Vector3.forward *- 2 * Time.deltaTime); } if (Input.GetKey(KeyCode.LeftArrow)) { transform.Rotate(0, -5 * 20 * Time.deltaTime, 0); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Rotate(0,5 * 20 * Time.deltaTime,0); } if (Input.GetKeyDown(KeyCode.Space)) { Instantiate(Kugel, pistole.position, pistole.rotation); } } } Hat darauf jemand eventuelle eine Antwort?
  3. Danke erst einmal für die Antwort. Hmm, ich könnte wirklich einen Collider zusätzlich auf das Wasser machen. Mir geht es ja allerdings darum das nur das Script der "Kreaturen" darauf reagiert. So wie ihr eigenes Verhalten dadurch beeinflusst wird. Vielleicht benutze ich letztendlich die Physic.Raycast-methode. Ich hoffte nur eine weniger eingeschränkte Sicht für meine Figuren zu haben. Die Zufallsmethode für eine Welt ist mir wichtig um zu sehen wie und welche Figuren am ehesten überleben. Auch wenn es bisher noch nicht so spannend ist, da sie nicht so viele Aktionen haben aus denen sie " auswählen" können. Mit dem A**Algorythmus muss ich mich erst noch einmal beschäftigen.
  4. Ich hatte vergessen das auch ein Strahl Möglich wäre aber ich glaube der geht nur starr gerade aus und ist glaube ich sehr dünn und das wäre eine sehr eingeschränkte Sicht.
  5. Hallo liebe Spieleentwickler und Untiyexperten die mir vielleicht helfen wollen. Ich habe in letzter Zeit ein Interesse an KI entwickelt. DA habe ich zumindest versucht den Anschein einer Ki zu entwickeln. Obwohl es mehr ein Evolutionssystem ist. Dazu werden in Startmethode einfach verschieden Werte wie vorwärst laufen sich drehen auf eine bestimmte Priorität gesetzt und das per Zufall. Das ganze soll je nach dem was die Figur berührt ausgeführt werden. Bei Wasser erhält die Figur Schaden LP-1; Bei Futter wird sie geheilt LP+300 (weil manche einfach an einer stehen bleiben und sich nie bewegen sollten die eher belohnt werden die etwas machen) So sterben die Nichtstuher aus und die sich bewegenden leben weiter manchmal weiter. Nach einer gewissen Weile erschaffen sie auch Klone von sich. Doch mein Problem ist jetzt das die Figuren sich Quasi blind durch die Gegend tasten. Obwohl die "Läufer" durch das Futter belohnt werden, werden sie gleichzeitig durch das Wasser das sie erst berühren müssen bestraft und nehmen viel Schaden bis die mit guten "Genen" die Aktion ausführen sich umzudrehen wenn sie merken das sie das Wasser berühren. Doch ich möchte ja jetzt auch das sie das Wasser sehen können und so gleich umkehren können, ohne das Wasser erst berühren zu müssen. Für die Sicht benutze ich das if(Vector3.Distance(player.position,this.transform.position)<10 && Vector3.Angle(player.position - this.transform.position ,this.transform.forward) <30 && /*wie frage ich den Tag des Wassers ab ohne Collider und ohne public?*/) { print("Ich seh's und drehe mich (wenn darin meine Priorität liegt bezogen auf das Objekt Wasser oder Futter)"); } Ich nutze ja bereits OnTrigger , doch das ist diese bline rumherrirren. Da die Figuren aber auch auf verschieden Umgebungen reagieren sollen kann ich es auch mit public nicht regeln. Dann müsste ich erst jedes Futter und Wasser das ich neu rein machen oder gar die Welt zufällig entstehen lasse möchte erst neu in die Publicvariable ziehen, was für den Spieler der nur das Spiel sieht auch nicht möglich ist. Gibt es eine Möglichkeit den Tag eines anderen Objectes ohne public und ohne OnTrigger abzufragen und darauf zu reagieren?
  6. Aquana

    Jing/Jiang

    Danke. Als mir der Name in den Sinn kam fand ich ihn so bescheuert das ich ihn schon wieder gut fand Mein Favorit ist aber immer noch Das Ungehuer von Loch im Boden ;D
  7. Aquana

    Jing/Jiang

    Ja ich hatte noch Einsendestress. Da konnte ich schon froh sein das es sogar noch einen Tag Verlängerung gab. Denn Unity spinnte auch erst einmal rum. Ein script konnte angeblich nicht gefunden werden, so das ich es noch einmal neu machen musste und das neue aber dann ganz normal gefunden wurde. Dann lies sich plötzlich das Spiel nicht mehr aus Unity exportieren wegen irgeneiner komschen Fehlermeldung und später als ich Unity wieder einmal anschaltete ging es plötzlich doch. Dann liesen sich einige Objekte ohe Rigigbody anklicken und andere benötigten aber wieder einen Rigidbody, obwohl alle einen Boxcollider haben. Dann war noch die Aufgabe das ganze in 2min Vorzustellen. Aber erst ab vollen 5 Sekunden Überzug gibt es Strafpunkte. So gesehen war das Spiel doch etwas zu komplex um es in 2Minuten richtig präsentieren zu können. Ich habe sogar vergessen das Ziel des Spiels zu erwähnen und auch auf die verschieden Monsterfähigkeiten und die Steuerung des Roboters konnte ich nicht richtig eingehen. Naja wieder mal was gelernt fürs nächste mal
  8. Aquana

    Jing/Jiang

    Ein Spiel für eine GameChallenge auf Youtube.
  9. Aquana

    schießen und Steuerung

    Ja Input.GetKey habe ich dann später auch nur verwendet als ich diesen Fehler bemerkte. Da ich testen wollte ob das ganze irgenwie evtl an Input.GetKeyDown zu tun hat. Also liegt es dann wohl an meiner Tastatur. Okay danke, dann weiß ich wenigstens schon mal mehr^^
  10. Aquana

    schießen und Steuerung

    Hallo liebe UnityCommunity, Ich habe mal einen kleinen Test gemacht um ganz simpel schießen zu können. Dazu ich einen Würfel als Spieler erstellt und ein Empty als Child dieses Würfels. Von dem Empty aus soll ein Prefab abgeschossen werden. Das sieht einfach so aus. using System.Collections; using System.Collections.Generic; using UnityEngine; public class lernen2 : MonoBehaviour { public GameObject Monition; public Transform spawnpoint; void Update () { if (Input.GetKey(KeyCode.Space)) { Instantiate(Monition, spawnpoint.position, spawnpoint.rotation); } } } Dann habe ich das Empty und das Prefab in die Zeilen reingezogen wie man es so macht. Das ganze klappt auch zum Großteil so wie es klappen soll. Dann ist mir allerdings etwas seltsames aufgefallen. Drücke ich gleichzeitig Den nach oben und Linkspfeil stoppt das abfeuern des Schusses einfach, das gleiche passiert wenn ich nach hinten und rechts drücke. Alles andere wie Nach vorne rechts und hinten links kann aber gedrückt werden und es wird gefeuert. Ich dachte das es vielleicht etwas mit dem Inputmanager zu tun hat, dort war aber nach einem kurzem Vergleich im Internet alles normal.Außerdem habe ich das Steueruungsscript vollkommen entfernt. Es ist wirklich nur noch das Script zum Schießen vorhanden. Das ganze macht für mich nicht den geringsten Sinn. Kann mir das jemand erklären?
  11. Aquana

    Animationsanpassung bei Nahkampfsystem

    Vielen vielen dank! Jetzt sehe ich meinen Fehler. Jetzt kann nach langer Zeit und einigem Ärger endlich meine Kampfsystem besser werden.
  12. Aquana

    Animationsanpassung bei Nahkampfsystem

    Danke erst mal für deine Antwort. Ich habe das ganze jetzt mal mit einem einfachen Code ausprobiert in verschiedenen Weisen. Zuerst dachte ich das bei GetCurrentAnimatorStateInfo den Integer angeben muss und bei isName die Variable die in meinem Animator verändert wird. if(Input.GetKeyDown(KeyCode.Space)) { anim.SetInteger("a", 1); } if (this.anim.GetCurrentAnimatorStateInfo(1).IsName("a"))//meine Variable im Animator heißt einfach a. { Debug.Log("Ich schlage dich!"); } Dann dachte ich das ich den Integer auf dem die Variable ist bei anim.GetCurrentAnimatorStateInfo eingeben muss und wie es ja da stand den Name der Animation if(Input.GetKeyDown(KeyCode.Space)) { anim.SetInteger("a", 1); } if (this.anim.GetCurrentAnimatorStateInfo(1).IsName("Basic Attack")) { Debug.Log("Ich schlage dich!"); } Doch leider stand wieder nur Invalid Layer Index `1` UnityEngine.Animator;GetCurrentAnimatorStateInfo(Int32) Dann kam ich auf die Idee das ich den Namen der Variable angeben muss bei GetCurrentAnimatorStateInfo if(Input.GetKeyDown(KeyCode.Space)) { anim.SetInteger("a", 1); } if (this.anim.GetCurrentAnimatorStateInfo("a",1).IsName("Basic Attack")) { Debug.Log("Ich schlage dich!"); } Da stand in der Fehlermeldung das GetCurrentAnimatorStateInfo 2 Argumente hat und das wohl Nichtsein darf Da aber bei keine dieser Möglichkeiten "Ich schlage dich" angezeit wurde in der Console. Versuchte ich es bei GetCurrentAnimatorStatInfo bei 0 zu lassen und wirklich nur den Name der Animation zu verwenden.Doch leider wurde mir auch da nicht der Text ausgegeben. if(Input.GetKeyDown(KeyCode.Space)) { anim.SetInteger("a", 1); } if (this.anim.GetCurrentAnimatorStateInfo(0).IsName("Basic Attack")) { Debug.Log("Ich schlage dich!"); } Vielleicht war alles komplett falsch was ich da gemacht habe. Ich weiß langsam wirklich nicht mehr weiter.
  13. Guten Tag, Ich suche einen Weg um abzufragen ob eine Animation gerade Sattfindet oder nicht bzw zu ende ist. Ich habe mir dazu Assets aus dem Unityassetstore herunter geladen um das ganze zu testen. Eine davon ist ein Skelet deren Angriffsanimation relativ langsam ist, die andere ein Drache. Ich hoffte zuerst das ich das ganze über StartCoroutine regeln lässt und dann über Time.time. Dann legte ich sogar extra noch eine Intergervariable an die immer dann wechselt wenn der Parameter der Animation wechselt. Doch leider ist bisher immer das gleiche Problem. Der Drache (der Spieler)bekommt einen Schlag ab und schüttelt den Kopf( weil er ja getroffen wurde).Zu diesem Zeitpunkt sollte der Spieler dem Gegner keinen Schaden zufügen können. Leider passiert aber genau das immer wieder und dem Gegner wird Energie abgezogen obwohl es nicht so aussieht als würde dieser geschlagen werden. Später möchte ich dann noch einbauen das man blocken kann(natürlich auch mit Animation). Meiner Methode scheint unnötig kompliziert zu sein und zu vielen Fehlern zu führen. Aus diesem Grund würde ich gerne wissen wie man so eine Aufgabe löst. Mir wurde schon vorgeschlagen es so zu lösen. if(anim.GetInteger("Hier Name des Parameters einsetzen" == 1)) {mach jetzt was} Ich bekomme jedoch leider nur die Meldung das man einen String nicht in einen Integer umwandeln kann. Ich nutzte auch ganz bewusst Set.Integer, da ich früher den Eindruck hatte das man über Set.Bool erst einmal jede andere Boolean über Script ausschalten muss und man dann an jede Einzelheit denken muss, wie Schalte diese ganzen jetzt aus und aktiviere das usw. Bei einem Integer ersetzt die Zahl automatisch alles. Vielleicht nützt es auch was wenn ich das Script für den Player hier poste. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class CharaLaufen : MonoBehaviour { public Image Energie; private float maxhealth = 100f; public float currenthealth = 0f; private float Lebensanzeige; Monster myMonstervariable; public Animator anim; public int Animationsanpassung; private bool lebt= true; void Start() { myMonstervariable = GameObject.Find("DungeonSkeleton_demo").GetComponent<Monster>(); anim = GetComponent<Animator>(); currenthealth = maxhealth; } void LateUpdate() { if (currenthealth <= 0) { lebt = false; anim.SetInteger("a", 5);//Tot Animationsanpassung = 5; } if (lebt == true) { anim.SetInteger("a", 0);//idle if (Input.GetKeyDown(KeyCode.Space)) { anim.SetInteger("a", 1);//Attacke Animationsanpassung = 1; }   else if (Input.GetKeyDown(KeyCode.M)) { anim.SetInteger("a", 4);//idle Animationsanpassung = 4; } if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0, 0, (Input.GetAxis("Vertical") * 15 * Time.deltaTime)); anim.SetInteger("a", 2);//laufen Animationsanpassung = 2; } if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.RightArrow)) { transform.Rotate(0, Input.GetAxis("Horizontal") * 150 * Time.deltaTime, 0); anim.SetInteger("a", 2);//laufen Animationsanpassung = 2; } } Lebensanzeige = currenthealth / maxhealth;//Lebensanzeige Energie.fillAmount = Lebensanzeige; //Lebensanzeige } void OnTriggerEnter(Collider other) { if (other.CompareTag("Hit") && myMonstervariable.Monstercurrenthealth > 0 && myMonstervariable.Animationsabfrage == 2 && currenthealth > 0) { anim.SetInteger("a", 3);//Bekommt Schlag ab Animationsanpassung = 3; currenthealth -= 5; } } void OnTriggerExit(Collider other) { if (other.CompareTag("Hit")) { anim.SetInteger("a", 0); } } } Ich danke jetzt schon mal jeder Person die mir hilft.
×