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

erixx

Members
  • Content count

    133
  • Joined

  • Last visited

Community Reputation

6 Neutral

About erixx

  • Rank
    Advanced Member
  1. Klasse klonen

    Hi, ich würde gerne eine Klasse klonen, damit ich eine unabhängige Kopie erhalte. Im Moment schaut das so aus: public static Skill Clone(Skill original){ Skill clone=new Skill(); clone.skillTarget=original.skillTarget; clone.skillName=original.skillName; clone.skillTooltip=original.skillTooltip; clone.skillLevel=original.skillLevel; clone.skillMainType=original.skillMainType; clone.icon=original.icon; clone.bookIcon=original.bookIcon; clone.skillCostType=original.skillCostType; clone.skillCost=original.skillCost; clone.skillCostAdd=original.skillCostAdd; clone.skillCooldown=original.skillCooldown; clone.skillCurCooldown=original.skillCurCooldown; clone.skillCooldownAdd=original.skillCooldownAdd; clone.usingCooldown=original.usingCooldown; clone.skillRangeType=original.skillRangeType; clone.skillRange=original.skillRange; clone.skillType=original.skillType; clone.skillDamageMultiplier=original.skillDamageMultiplier; clone.levelTypeDamageMultiplier=original.levelTypeDamageMultiplier; clone.requiredWeapon=original.requiredWeapon; clone.gotRightWeapon=original.gotRightWeapon; clone.applyType=original.applyType; clone.applyAmount=original.applyAmount; clone.applyAmountAdd=original.applyAmountAdd; clone.skillCastParticle=original.skillCastParticle; clone.skillDuration=original.skillDuration; clone.skillDurationAdd=original.skillDurationAdd; clone.statusEffect=original.statusEffect; clone.statusEffectChance=original.statusEffectChance; clone.statusEffectChanceAdd=original.statusEffectChanceAdd; clone.statusEffectDuration=original.statusEffectDuration; clone.statusEffectDurationAdd=original.statusEffectDurationAdd; return clone; } Nun meine Frage dazu, geht das nicht auch einfacher?
  2. Oh sorry , "Perma" war wohl falsch gewählt. Es gibt Speicherpunkte, (Schreine) die allerdings nicht allzu oft vorkommen, und dort wird dann der Spielstand nach dem Spieler Tod, falls keine Rettung eintritt, wieder geladen. Der Spieler kann beim Tod auswählen, ob er auf Hilfe wartet (alledings verschwindet diese Option nach Ablauf der Wartezeit), einen Res. Orb verwenden möchte (sofern er einen besitzt) oder seinen Spielstand lädt. Aber eine richtige "Permadeath" Möglichkeit könnte ich auch einbauen, wie bei D2 die Hardcore option.
  3. Hi, und danke. Das mit dem addieren des Schadens und dem Heal (evt auch noch erlittenen Schaden, für zB Tanks, gefällt mir sehr gut, danke für die Idee ). Mit dem Respawn das funktioniert so leider nicht immer, da es sehr wenige Möglichkeiten gibt, dem Permadeath zu entweichen. Also ist ein Spieler /NPC gestorben, kann er nur von anderen innerhalb einer vorgegebenen Zeitspanne wiederbelebt werden (falls der "Retter" den passenden Skill beherrscht und das passende Skilllevel hat), oder per "Resurrection Orb", ein sehr seltener Gegenstand, der dann nach der Wiederbelebung aus dem Inventar entfernt wird. Und ist Beides nicht zutreffend, verschwindet der Spieler (Gameover) / NPC permanent aus dem Spiel. Und in dem Fall (NPC) müssten die Exp/Beute dann unter den Überlebenden aufgeteilt werden. Eine fixe Exp gibt es so nicht, je mehr Gegner ein NPC/Spieler tötet, desto höher wird die Exp, die man für sein Töten erhält. (Kopfgeldjägermäßig ) Das mit dem Würfeln ist auch eine super Idee, da könnte jeder Teilnehmer dann um die Drops würfeln, und zwar so, dass die, mit den höheren Anteilen eine größere Würfelchance haben. Also NPC 1 hat dann eine 21.4%ige Chance Drop 1 zu bekommen, NPC 2 eine 42,9% ige usw. Und das könnte dann auch so auf Drop 2 usw. angewendet werden. So hätte jeder eine Chance auf den Drop, allerdings mit fairen Chance. Vielen Dank für die Hilfe!
  4. Hi. Es geht um die Exp/Drop aufteilen zwischen mehrerern Angreifern in Abhängigkeit des zugefüten Schadens. Jeder NPC/PC bekommt eine Liste, in dem dann alle Angreifer (also Gegner, die dem anderen (hier Boss) bei einem erfolgreichen Treffer HP abziehen) und der dazu gehörige Wert des Totalschadens. Am besten versuch ich das mit einem Beispiel zu erklären: -Boss gibt 1000 Exp und hat 1000 Hp. -Spieler hat dem Boss 500 (50%) Schaden hinzugefügt. -NPC 1 hat dem Boss 250 (25%) Schaden hinzugefügt. -NPC 2 hat dem Boss 250 (25% Schaden hinzugefügt. Ist der Boss erledigt, bekommt nun Spieler = 500 Exp, NPC 1 = 250 Exp, NPC 2 = 250 Exp. Soweit, so gut. Doch nun gibt es folgende Probleme dabei: Probem 1: NPC 2 stirbt beim Kampf noch bevor der Boss erledigt ist: zB: Spieler: = 500 (50%) NPC 1: = 260 (26%) NPC 2: = 240 (24%) <--- (ist aber Tot, also wurde aus der Liste der Angreifer entfernt) Was passiert nun mit den 24% von NPC 2? Sollen diese dann komplett unberücksichtigt bleiben? Also einfach wegfallen? Oder in gleichen / gerechten Teilen unter den überlebenden Angreifern aufgeteilt werden? Methode 1 (gleiche Teile): Wäre dann hier mit 2 Teilern bei gleichen Teilen (50%/50%): +120 Exp, wäre dann beim Spieler 620 Total Exp, und bei NPC1 380 Total Exp Methode 2 (gerechte Teile): Bei 2 Teilern mit gerechten Teilen (50%/26%)* Das wären dann ungefähr (die genaue Formel fehlt mir hierfür noch*) +180 und +60 Exp, also beim Spieler dann 680 Total Exp, und beim NPC1 320 Total Exp; *(Die Formel, wie ich die 24% von NPC2 unter Spieler (50%) und NPC1 (26%) in Abhängigkeit von den % aufteilen kann, hab ich noch nicht herausgefunden. Ich müsste wohl irgendwie die 50% und die 26% mit den 100% /bzw 24% von NPC2 gleichstellen, sodass die 76% dann 100 % von den 24% wären.) Problem 2: Boss heilt sich. Das würde heissen, dass mehr Totalschaden als maxHp existiert, und das wiederrum würde heissen, dass Spieler und NPCs zusammen mehr als 100% der Boss Exp erhalten würden. BSP: Boss hat 1000 HP, Er hat sich im Laufe des Kampfes um 500 HP geheilt. Das heisst, dass NPCs und Spieler zusammen 1500 Schaden augeteilt haben, der Boss aber nur 1000 Hp hatte, ergo, NPCs und Spieler bekommen zusammen 150% der Exp, das darf so nicht sein. Ich könnte es vieleicht lösen, in dem ich die MaxHp + die geheilten Hp addiere, und dann die Summe mit den 100% Gesamterfahrung gleich setze. BSP: Runde 1: Boss hat 1000 HP und gibt 1000 Exp Spieler macht 250 Schaden (25%) NPC 1 macht 125 Schaden (12,5%) NPC 2 macht 125 Schaden (12,5%) So, nun hätte der Boss noch 500 HP, also 50%. Und nun stirbt NPC2, es werden die 125 Schaden (12,5%) gemerkt,( sodass die Überlebenden sich diese 12,5% (125 Exp) untereinander, je nach Methode 1 oder Methode 2 ,am Ende des Kampfes aufteilen können. Dann wird NPC 2 aus der Liste der Angreifer entfernt. Runde 2: Der Kampf geht weiter. Boss hat nun 500 HP und heilt sich um 100 HP. (Gesamtwert wird um 100 erhöht, also hat er dann sozusagen 1100 TotalHp ) Spieler macht nun 300 Schaden ( das wird zu den 250 Schaden aus Runde 1in der Liste addiert, also hat er einen Gesamtschaden von 550 angerichtet) NPC1 macht 300 Schaden (wird zu den 125 aus Runde 1 addiert, Gesamtschaden beträgt nun 425) Der gemerkte Gesamtschaden von NPC2 beträgt 125. Auswertung: TotalDMG Spieler: 550 (50%) TotalDMG NPC1: 425 (~39%) TotalDMG NPC2: 125 (-11%) Sind zusammen 1100 (100%) und das wäre passend so und sollte auch dann funktionieren, wenn ein weiterer Angreifer (NPC) erst im späteren Velauf des Kampfes hinzukommt. Das heisst dann, umso mehr Hp der Boss heilt, desto geringer wird der Anteil von NPC2. Problem 3: Leider ist das ganze Teilungssystem ausnutzbar, Spieler könnte sich ständig selbst heilen/kiten, die NPCs kämpfen lassen, hoffen dass dann die NPCs alle sterben, und so dann schlussendlich die gesamten Exp erhalten, da es ja keine Überlebenden mehr gibt, mit denen er die Exp/Drops teilen müsste... Des weiteren könnten mit diesem System nur NPCs /Spieler Erfahrung und Drops bekommen, die offensiv Kämpfen, also Schaden machen. Es sollten aber auch unterstützende Angreifer (Heiler, Tanks usw) Erfahrung erhalten.Und dann müsste das ganze System nicht nur in Betracht auf BossHp/Dmg, sondern auch BossDmg/Spier-NPC HP und BossDmg/Geheilte HP durch Spieler/NPC ausgelegt sein. Vielleicht gibt es aber auch simplere Wege, eine gerechte Aufteilung hinzubekommen. Über Vorschläge und Anregungen würde ich mich freuen.
  5. Hi Dj, ja da hast du natürlich Recht damit. Also die basics sind so weit erstmal fertig. Der Hauptgedanke war es, eine dynamische Spielwelt zu erschaffen, die sich ständig selbst verändert, weiter entwickelt und ausbalanciert, und in der jede Handlung Auswirkungen auf fast alles hat/haben kann. Und ich bin der Meinung, dass die KI in diesem Fall eine große Rolle in dem Spiel/Simulation spielt. Quests, viele Abläufe und das Balancing werden sehr stark von der KI beeinflusst. Und der Spieler wiederrum kann die KI, und dadurch den Spielverlauf, durch seine Handlungen teilweise mit beeinflussen. Es ist also alles auf direkte und indirekte Art und Weise miteinander verbunden und verknüpft. Ich als "Erschaffer" des Spieles möchte mich beim spielen dann später selbst noch überraschen lassen können, und auch mal auf unvorhersehbare, doch stets auslabancierte Spielabläufe treffen. Und das ist, glaub ich, gerade bei Singleplayer (Rollen) Spielen, eine große Herausforderung. Auch das Thema AI an sich ist sehr interessant, da es doch so viele Übereinstimmungen mit unseren eigenen Verhaltens/Handlungs/Denk/Bewertungsmuster gibt. Der wesentliche Unterschied zwischen Mensch und AI ist wohl das Bewusstsein, der Wille und die Emotion. Die AI kann zwar mittlerweile die menschliche Emotion erkennen, bewerten und darauf reagieren, doch wird sie jemals selbst empfinden können? Doch das ist wohl ein ganz anderes Thema.
  6. OK, die Lösung war doch recht simpel: Jeder NPC speichert Kampfinformationen, und wertet diese aus. ZB. die Trefferquote der letzten Treffer (seit dem Waffenwechsel / der letzen 100 bzw 1000 Angriffe) oder zB. der erlittene Durchschnittsschaden pro Treffer ( in Ahänigkeit zu zB den maxHP). Beispiel: Es wird maxHp/erlittenen Schaden gespeichert, und wenn der Schaden zB nicht mehr als 30% der maxHp beträgt, ist alles in Ordnung. Und trifft dies bei zB 70% der letzten 100 erlittenen Treffern zu, wäre diese Überprüfung unauffällig. Und dann gibt es eben mehrere ähnliche Überprüfungen. (Es gäbe auch die Möglichkeit, nicht (nur) gesammelte Informationen auszuwerten, sondern auch Kämpf im Vorraus zu simulieren. Doch da eine präzise Vorhersage zu treffen, stelle ich mir bei all den random Ereignissen/Stats/Möglichkeiten als sehr schwierig vor, da sich zumal ja auch jeder NPC und dessen Items und Stats ständig ändern, und/oder an andere anpassen. Gibt es eigentlich schon eine Schach KI, bei der die Spielfiguren (random) Items und Fähigkeiten besitzen? ) Fällt die Gesamtauswertung dieser Informationen unauffällig aus, kann eines der 3 fest vorgegebenen Bewertungssysteme (melee, magic, ranged) angewendet werden. Ist dies allerdings nicht der Fall, wird ein weiteres, dynamisches Bewertungssystem mit Hilfe der gesammelten Informationen und deren Auswertungen erstellt und angewendet. Und dann werden neu gefundene und die bereits gefundenen Items im Inventar neu bewerte ,und gegebenfalls angelegt, weiterverarbeitet, oder an andere NPC weiter gereicht. So kann garantiert werden, dass jeder NPC ständig in der Lage ist,auf seine "Umwelt" reagieren zu können, und sich an diese anpasst.
  7. enum Mehrfachauswahl

    Hi, grüß dich. Danke dir, das scheint auch mir so die simpelste Lösung zu sein. Nun hab ich hier noch was gefunden, wie man es "bitwise" mit flags machen könnte: http://www.alanzucconi.com/2015/07/26/enum-flags-and-bitwise-operators/ Werd mich da ein wenig reinarbeiten müssen, doch vielleicht bietet sich das ja an und vereinfacht spätere Mehrfachabfragen.
  8. Hi, danke dir für die Anregungen. Ja das mit den Itemklassen hab ich so gemacht, also alles wird nur per Script generiert und verwaltet. Inventar und Statklassen hab ich auch so gemacht, also NPCs und PC haben die gleichen Klasse, sodass jede Funktion bzw jeder NPC/PC direkt auf zB target.Inventory oder target.Stats zugreifen kann. Nur die einzelnen Items/Stats unterscheiden sich dann bei jedem NPC. Das mit der Vorgabe der NPC Klasse scheint unausweichlich zu sein. Es gibt keine festen Charakterklassen, also ein jeder kann alles skillen, und verschiedene Skills / Kamptfaktiken kombinieren. Allerdings wird der Angriffsschaden nach den NPC/PC Attributen berechnet. ZB: Ein Bogen macht nur ranged dmg. Die Stärke und Intelligenz haben absolut keinen Einfluss auf den Gesamtschaden, den der NPC/PC dann mit diesem Bogen macht. Also wird nur crit chance, crit dmg, att rate, und Geschicklichkeit berechnet. Kämpft der Spieler/NPC mit einem Schwert, gillt das gleiche, nur anstatt Geschicklichkeit, wird dann eben Stärke mit einberechnet. Bei Skills ist das ganze so ähnlich. Man kann zwar jeden Skill erlernen, doch Skills, die Schaden machen, bekommen Schadensmultiplikatoren. Dh, bestimmte Skills werden durch die Attribute des PCs/NPCs verstärkt. Allerdings lassen sich die Skills auch mit den passenden Fähigkeiten und Schriftrollen kombinieren, bzw verändern, sodass zB. ein Fireball kein Mana mehr verbraucht, dafür aber Stamina oder HP. Oder der Schadensmultiplikator kann verändert werden, von Intelligenz auf Geschick oder Stärke, verliert dann aber an Gesamtschaden. Und das alles können die NPCs eben auch machen. Das heisst dann, jeder NPC bräuchte eine Hauptklasse, auf die er dann aufbaut, wie zB Magic, Ranged oder Physic, und dann könnte die Wertigkeit der Items, wie von dir beschrieben, anhand der Klasse und ihrer Zielwerte erfolgen. Das scheint mir so am meisten Sinn zu machen, so könnte auch verhindert werden, dass ein NPC im Laufe seiner Eigenentwicklung sich selbst "verskillt", also zwischen verschiedenen Spezialisierungen schwankt,. Allerdings könnte diese "Schwankung" auch vorteilhaft sein. Was ich damit sagen will, ist, dass, wenn ein NPC zB zu viel daneben haut, also nur noch "Miss"es macht, und keinen anderen NPC mehr trifft, er durch diese Schwankung spontan darauf reagieren könnte, also daraus lernen, und seine nächsten Items nach Treffergenauigkeit auswählt. Ich glaube, das beste wäre es, beides miteinander zu kombinieren. Also solang alles gut läuft, wählt der NPC die Items nach den Wertigkeiten der Stats für seine passende Klasse aus. Sollte es jedoch zu Problemen kommen, müsste er spontan darauf reagieren können. Nun gut, ich werde das nun versuchen, umzusetzen. Das wid ein Spass werden Vielen Dank für deine Anregung!.
  9. enum Mehrfachauswahl

    Hi! Ich würde gerne mehrere enum states in einem enum per script auswählen. Hier wäre das enum: public enum NpcType{ Human, Animal, Orc, Undead, Ghost, Goblin, Demon, Misc, Friendly } Und nun hat jeder NPC mindestens einen NpcType. NPCs mit dem gleichen Typen greifen sich nicht an und unterstützen sich gegenseitig. Nun möchte ich aber in bestimmten Fällen, dass ein NPC Typ zB. Animal UND Friendly is, sodass dann andere NPC Typen es nicht angreifen (wegen Friendly), es aber auch nicht unterstüzten. Geht das so mit einem enum? Oder müsste ich mehrere verwenden, bzw es anders lösen ( zB Human, HumanFriendly, Animal, AnimalFriendly, usw.)?
  10. Hi! Ein kurzer Überblick: NPCs können gegen andere NPCs und den Spieler (je nach Gesinnung) kämpfen. Sie sammeln auch Erfahrung, steigen in ihrem Level auf und können Drops aufheben. Jeder NPC hat ein eigenes Inventar und Ausrüstungsslots. Neu gefundene Gegenstände sollen mit den bereits ausgerüsteten verglichen und gegebenfalls ersetzt werden. Die alten (weniger gute) Items werden dann bei Bedarf an andere NPCs weitergegeben, an den Spieler verkauft, oder eingeschmolzen/weiterverarbeitet. Nun weiss ich nicht, wie ich die NPCs die neu gefundenen Items mit den bereits ausgerüsteten vergleichen lassen soll. Nach welchen Kriterien könnte sich der NPC für ein Item entscheiden? Bei Waffen wäre das noch relativ simpel, da könnte ich die DPS (mit Basisschaden, Angriffsgeschwindigkeit, Krit Chance und Dmg) vergleichen. Doch bei Rüstungen wird das ganze ein wenig komplizierter, da sie verschiedene Rüstungswerte (phys def, mag def, ranged def, diverse ele defs) haben können, und zusäzliche Stats, die auch den DPS, HP, HP Regeration, Mp Regeration (NPCs können auch Skills selbstständig lernen und benutzen, brauchen dann aber dementsprechend viel Mp), Stamina /Stamina Regenration (wird beim Rennen verbraucht, zB. wenn ein NPC im Kampf keine Pots mehr hat, oder keine Heal Skills casten kann, ergreift er die Flucht) oder andere wichtige Dinge, wie zB Sockel, in die der NPC dann auch gefundene Gems "intelligent" sockeln soll. Ich dachte an sowas wie Item Wertigkeiten. Also, dass bestimmte Stats bestimmte Wertigkeiten erhalten, und der NPC dann nur die Wertigkeiten vergleicht. Allerdings würden damit nicht die Schwachstellen der NPCs ausgeglichen werden (zB. zu wenig Mana, um ausreichend die erlernten Skills casten zu können, oder zu viel DMG aber zu wenig Defensive usw.). Eine weitere Möglichkeit wäre es, sich die NPCs beim Kampf diese Schwachstellen merken zu lassen, also welche Schwächen, wie häufig sie auftreten, usw.Diese Daten könnten dann ausgewertet werden, und die Itemauswahl , bzw die Auswahl der zu sockelnden Gems, dementsprechend erfolgen. Also meine Frage an euch lautet: Nach welchen Kriterien kann sich die KI sinnvoll entscheiden? Nach welchen Kriterien entscheidet sich der echte Spieler?
  11. Objekt an Position finden

    Das klappt prima. Danke euch.
  12. Objekt an Position finden

    Hi Thariel. Also es geht um ein 3d Pathfinding in einer Voxel Welt. Es gibt sehr viele Wuerfel die per code generiert und angeordnet werden, aber diese koennen sich auch zum Teil schnell veraendern. Also ihre Positionen, Rotationen und Zustaende, wie zB "begehbar", "abbaubar", usw sind dynamisch. Nun soll beim Pathfinding zB der Zustand des Wuerfels, der die NPC Position - (3,2,8) hat, überprüft werden. Das mit dem Schachbrett kommt schon hin, nur eben mit 3 Dimensionen, und die Form und Hoehe des Schachbrettes waeren dynamisch veraendrebar. Das alles aber haengt im 3d Raster, und nur ganze Zahlen spielen eine Rolle.Okay, dann werd ich das kombinieren. Die Wuerfel nach ihren Positionen benennen, eine Liste aller Wuerfel erstellen, und dann per IndexOf(positionToString) darauf zugreifen.
  13. Guten Tag. Wie kann man ein bestimmtes Objekt an einer WorldPosition (Vector3) finden, ohne Physics oder 3 dimensionale Arrays zu verwenden? Es handelt sich um haeufige Abfragen sehr vieler Objekte/Positionen. Mein Gedanke war, jedem Objekt seine Position als Namen zu geben, und dann nur das Objekt mit der gewuenschten Position als Name zu suchen. Gibt es da noch performance schonendere Vorgehensweisen?
  14. Hi, ich hab eine Formel aufgestellt, die die Helligkeit/Alphawerte von Licht/Farbuebergangen per Lerp mit dem Faktor 0-1 in Abhaengigkeit von der aktuellen Tageszeit (0 - 24 Uhr) und dem Halbtageswert ausrechnet. Vielleicht kannst du sie dir ja an deine Bedeurfnisse anpassen: var halfday:int=12; bright=-(((currentTime-halfday)/halfday)*((currentTime-halfday)/halfday))+1; //sunset if (currentTime >=halfday) { curCol=Color.Lerp(color2, color1,bright); } //sunrise if (currentTime <halfday){ curCol=Color.Lerp(color1, color2,1-bright); } LG
  15. Hallo. Kurze Beschreibung: Die Spielwelt besteht aus sehr vielen kleinen Wuerfeln, die in 3d zufaellig, aber mit seed und per Perlin Noise generiert und angeordnet werden und kann vom Spieler veraendert werden. Jeder Wuerfel hat einen Zustand (Begeh+Bebaubar) und kennt alle Nachbarswuerfel (links, rechts, oben, unten, vorne, hinten) und deren Zustaende und kann auch auf die Nachbarn der Nachbarn usw zugreifen. Wenn auf einem Wuerfel sich ein anderer Wuerfel, oder ein anderes Objekt (nicht Spieler oder NPCs) befindet, wird der Zustand in Nichtbebau+gehbar geaendert. Wuerfel, die an allen 6 Seiten Nachbarn haben, werden primaer deaktiviert. So nun zum Pathfinding. Das laeuft in etwa so ab: Der PC/NPC kennt den Wuerfel der unter ihm ist. Und er kennt sein Laufziel, also wohin er letztendlich laufen will. Nun fragt er seinen "Unterwuerfel" nach den Nachbarn, wenn sie begehbar sind, werden sie als moegliche Laufwuerfel genommen. Dann wird die Distanz aller moeglichen Laufwuerfel und dem Hauptziel genommen. Der Wuerfel, der die kuerzeste Distanz zum Hauptziel hat, ist das neue Zwischenziel des PCs/NPCs. Der PC/NPC darf 1 Weurfel nach oben/unten gehen. Das wird abgefragt, indem die 4 Nachbarswuerfel des Hauptwuerfels(der Wuerfel unter dem PC/NPC) ihren Ober/Unterwuerfel nach Begeh+Bebaubar ueberpruefen. Wenn ich nun ueberpruefen will, ob links ein begehbarer Wuerfel ist, der 1 Wuerfelfeld unter mit ist, laeuft das so ab: Hauptwuerfel->Links->Runter; Wenn Hauptwuerfel keinen links von sich hat: Hauptwuerfel->Runter->Links; Wenn sich der PC/NPC am Rand der Map befindet, auf dem die Wuerfelhoehe nur noch 1 Wuerfel hoch ist, komme ich nicht mehr an die lezten Wuerfel ran, da sich keine weiteren darueber, darunter, oder davor befinden. Das Problem ist, wenn links vom Hauptwuerfel kein Wuerfel ist, und unter dem Hauptwuerfel auch keiner komme ich nicht mehr an den zu ueberpruefenden Wuerfel ran. Dh. beim Wuerfel Rauflaufen klappt das Prima, nur beim Runterlaufen nicht. Funktioniert: ---[x] [x][x] Funktioniert nicht: ---[x] [x] Ich hoffe, ich konnte mich ein wenig verstaendlich ausdruecken, und frage euch, wie ihr das loesen wuerdet. LG
×