Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

1

21.05.2011, 22:51

Kollsision vermeiden

Hi Leute,
bin gerade am krübeln wie ich es hinbekommen kann, dass eine Kollision vermieden wird.
Das Problem ist folgendes, dass die gegner die dem spieler folgen immer näher aneinadenrrücken und ihrgendwann "aufeinander"
liegen. Nun wollte ich, dass wenn der eine Gegner in die nähe des anderen gegner kommt ihrgendwie dir richtung oder so wechslet.

Meine Gegner move funktion ist so aufgebaut, dass jenachdem wo der spieler sich befindet die Variablen X und Y manipuliert werden, dass sich der Gegner dem Spieler nähert.
Leider bekomme ich es dadurch ihrgendwie nicht hin, dass die Gegner dass ziel spieler im augebehalten jedoch gleichzeitig sich selbst nicht über den haufen rennen.

Wäre froh über hilfe.
Wenn ihr zusatzinformationen braucht, kann ich diese gerne geben.

Gruß Moritz

2

21.05.2011, 23:25

Willst du jetzt die Kollision zweier Gegner miteinander vermeiden oder willst du vermeiden, dass sie sich überschneiden?
Bei dem was du beschreibst willst du doch eine Kollisionserkennung haben. Du kontrollierst, ob die Gegner miteinander kollidieren und wenn sie das tun, dann kannst du entweder direkt die Position der Gegner manipulieren oder aber die Bewegungsrichtung anpassen, sodass es nicht zu einer Überschneidung kommt.

Gruß
SaRu_

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

3

22.05.2011, 00:11

ja hast du eigetnlich schon richtig erkannt ich will, dass kurz bevor sie sich treffen die richtung geändert wird.

Phalax

Frischling

Beiträge: 82

Beruf: Student Media Systems

  • Private Nachricht senden

4

22.05.2011, 00:29

Saru_ hat doch eigentlich schon erklärt, was zu tun ist. Wo genau liegt denn jetzt Dein Problem? Wenn es sich "nur" um Sprites handelt, sollte die Kollisionserkennung eigentlich kein Problem sein. Wenn Du die dann hast, brauchst Du nur noch die Positionen der Gegner so zu verändern, das sie sich eben nicht überschneiden und/oder ihre Richtung ändern.

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

5

22.05.2011, 00:46

dass problem ist,dass immer in jedem frame dem spieler gefolgt wird und dann wieder die richtung geändert wird, dabei tritt dann ein nicht ganz korrektes KI verhalten auf

6

22.05.2011, 02:43

ein nicht ganz korrektes KI verhalten auf


Und genau das solltest du uns mal näher erklären und den relevanten Quellcode zeigen.

Gruß
SaRu_

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

22.05.2011, 10:42

Im moment kann man deine "KI" nicht wirklich als intelligent bezeichnen, sie folgt ja nur stur dem Spieler. Du hast in meinen Augen zwei Möglichkeiten.
1. Die schwierige Variante: Schreib die KI so um, dass sie nicht mehr nur stur dem Spieler folgt, sondern auch mal in die entgegengesetze Richtung fliegt und dann wieder umdreht. Da kannst du andere Gegner gleich viel besser mit einberechnen.
2. Die einfache Variante wäre, die Gegner, ab einem bestimmten Abstand, voneinander weg zu schieben. Das kannst du dir wie zwei Magnete vorstellen, die man mit gleicher Polarität zusammenführt. Je kleiner der Abstand, desto stärker stoßen sie sich ab. Vielleicht kriegst du es ja sogar so hin, dass es schön aussieht.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Raidenkk

Treue Seele

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

8

23.05.2011, 08:01

Hey,
gut das sich das Thema dank Natchoman geklärt hat ich bin gerade selber dabei eine nKollision für Gegner zu erstellen und hoffe das ich diese Methode auch anwenden kann ;)

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

9

25.05.2011, 19:20

so ich melde mich mal wieder mit einer frage, habe nun die KI ein weniig umgeschrieben und bin nun mit dem "Magnet" der Spieler beschäftigt.
DAzu habe ich jedoch eine frage.

Denn ich realisiere dass momentan so, dass wenn der Gegner in dem und dem Bereich ist, dann wir ddie Move variable immer mehr verkleinert, so dass er immer langsammer wird umso näher er kommt und letztendlich wieder in die andere richtung zu fliegen, dabei entsteht, dass Problem sobald ich die Funktion an mehr als 1 Gegner gebe erhalten sie wieder gleich Werte und der Spaß ist vorbei.
Wie kann ich dies lösen?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

26.05.2011, 06:50

Indem Du den Bug behebst. Du berechnest offensichtlich irgendwas falsch. Und das übrigens schon von Anfang an, nur probierst Du jetzt eine andere Methode. Ich will nicht fies klingen, aber für solche Probleme solltest Du doch eventuell mal Deinen Debugger anwerfen. Wenn's ganz schlimm wird, kannst Du auch hier erstmal Code posten. Aber ohne eins davon wird Dir bei Deiner Fehlersuche *effektiv* niemand helfen können.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (26.05.2011, 06:57)


Werbeanzeige