Zurück   Flashforum > Flash > ActionScript > Spielkonzepte und Spieleprogrammierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-01-2010, 14:02   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 7
Zelda - komme alleine nicht mehr weiter

Hallo
Ich wende mich an euch, da ich als Actionscript Anfänger leider alleine nicht mehr weiterkomme. Ich scheiter im Moment an der KI der Feinde.

Zum einem möchte ich das die Feinde zufällig eine Richtung einschlagen, ein paar Schritte laufen und dann wieder die Richtung wechseln.

Mein größten Problem aber, ist die Hittest Abfrage zwischen den Feinden und den Wänden ( damit sie nicht mehr durch Wände durchlaufen können ). Ich habe bereits alles Mögliche ausprobiert, aber komme einfach nicht vorran und bin kurz vor dem Verzweifeln

Das Spiel sieht im Moment so aus: Zelda Game

Und hier die FLA Datei

Die Funktion für die Feind Ai sieht folgendermaßen aus.

Zitat:
function enemy_ai()
{
var EnemyToTest = null;
var numberOfEnemy = enemyNames.length;
for(var i=0; i<numberOfEnemy; i++)
{
EnemyToTest = _root.map[enemyNames[i]];
if (_root.player._currentframe <= "20") { // spielt in dem fall keine Rolle
if (_root.map[enemyNames[i]]._currentframe == "1") // spielt in dem fall keine Rolle
{
if (player._y <= EnemyToTest._y+map._y+150) // Wenn Spieler sich feind nähert
{
if (player._x >= EnemyToTest._x+map._x-150) // Wenn Spieler sich feind nähert
{
if (player._x <= EnemyToTest._x+map._x+150) // Wenn Spieler sich feind nähert
{
if (player._y >= EnemyToTest._y+map._y-150) // Wenn Spieler sich feind nähert
{
if (player._x >= EnemyToTest._x+map._x)
{
EnemyToTest._x += 0.6; // Feind läuft zu Spieler
}
if (player._y <= EnemyToTest._y+map._y)
{
EnemyToTest._y -= 0.6; // Feind läuft zu Spieler
}
if (player._x <= EnemyToTest._x+map._x)
{
EnemyToTest._x -= 0.6; // Feind läuft zu Spieler
}
if (player._y >= EnemyToTest._y+map._y)
{
EnemyToTest._y += 0.6; // Feind läuft zu Spieler
}
}}}}}}
}
}
Die Wände die Abgefragt werden sollen sind alle durchnumeriert (wall1,wall2,wall3 ect). Ich hatte versucht in der For Schleife eine For Schleife zu machen die alle Wände durchcheckt aber das geht ja leider nicht.

Vielleicht müsste ich auch die ganze Funktion bzw Idee der Feind AI umstruckturieren, allerdings wüsste ich nicht wie.

Ich wäre sehr dankbar wenn jemand mir ein paar Tipps geben könnte

Gruß

Toni
Toni88 ist offline   Mit Zitat antworten
Alt 25-01-2010, 15:54   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
Zitat:
Zitat von Toni88 Beitrag anzeigen
Die Wände die Abgefragt werden sollen sind alle durchnumeriert (wall1,wall2,wall3 ect). Ich hatte versucht in der For Schleife eine For Schleife zu machen die alle Wände durchcheckt aber das geht ja leider nicht.
Doch, das geht. Du muss nur eine andere Laufvariable nehmen. Wenn du deine Wände ebenfalls in einem Array hältst:
ActionScript:
  1. for(var i=0; i<numberOfEnemy; i++){
  2.   for(var j=0; i<numberOfWalls; j++)testeEnemyGegenWand(Enemy[i],Wall[j]);//hier deine Testfunktion
  3. }

oder einen Mc per Variable ansprechen, falls du kein Array willst und die MC-Namen so durchnummeriert hast wie angegeben:
var wallToTest=_root["wall"+j];//ist z.B. für j=3 dasselbe wie _root.wall3
joeydee ist offline   Mit Zitat antworten
Alt 25-01-2010, 16:15   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 7
Wow! Super... danke
Jetzt funktioniert es Da war also der Fehler.
Toni88 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Flash CS3] Komme nicht mehr weiter, Verständnisproblem Jogi 01 Flash Einsteiger 3 11-02-2009 17:14
Hilfe.. ich komme nicht mehr weiter.. mfeldheim ActionScript 1 0 12-11-2005 17:30
komme nicht mehr weiter Nightflyer PHP und MySQL 3 04-10-2003 01:30
ich komme nicht mehr weiter... nielsholgerson Flash MX 2 12-11-2002 16:33
- musik probleme - bitte helft mir komme nicht mehr weiter - checkerweb Flash 4 und Flash 5 1 01-08-2002 10:12


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele