Webdesign in Siegen

Gameprogrammierung

Fragen zum Thema Flash können hier gestellt werden

Gameprogrammierung

Beitragvon Liam am 15.07.2006, 21:35

Hi,

ich habe mir vorgenommen ein Spiel ähnlich wie Warsheep von ICQ zu programmieren, wenn dies den Flashexperten aus diesem Forum kein Begriff sein sollte, werde ich es erklären.

Ich steuer mein Fahrzeug mit

Code: Alles auswählen
onClipEvent (load) {
   var speed_tank = 15;
   var rot_speed_tank = 10;
}
onClipEvent (enterFrame) {
   if (Key.isDown(Key.LEFT)) {
      this._rotation -= rot_speed_tank;
   } else if (Key.isDown(Key.RIGHT)) {
      this._rotation += rot_speed_tank;
   }
   if (Key.isDown(Key.UP)) {
      var sobj = getSpeed(this._rotation);
      this._x += sobj.spdx;
      this._y += sobj.spdy;
   } else if (Key.isDown(Key.DOWN)) {
      var sobj = getSpeed(this._rotation);
      this._x -= sobj.spdx;
      this._y -= sobj.spdy;
   }
   function getSpeed(ang) {
      ang = ang*Math.PI/180;
      var sx = Math.sin(ang)*speed_tank;
      var sy = -Math.cos(ang)*speed_tank;
      return {spdx:sx, spdy:sy};
   }
}


Ich weiß aber nicht, wie ich das machen soll, dass sie im Gelände nicht über Hindernisse fahren können.

Mit welchem Code oder welchen Formeln und Funktionen kann ich soetwas bewerkstelligen?
Liam
Mitglied
 
Beiträge: 16
Registriert: 26.05.2005

Beitragvon Christopher am 16.07.2006, 00:07

Ich kann dir jetzt nicht sagen, wie du es direkt programmierst, aber ich würde versuchen, die Stellen, die nicht befahren werden dürfen durch Koordinaten zu bestimmen. Vielleicht kannste da sowas wie Areas definieren oder so!^^

Wie erstellst du denn das Spielfeld? Mit so einzelnen Grafiken? Wenn ja, dann hat ja jede Grafik einen Index denke ich. Dann musst du einfach definieren, welcher Index nicht befahrbar ist und da "einfach" eine Kollisionsabfrage für erstellen....

Hoffe das hilft weiter... :? Sind halt nur Lösungsansätze...
MfG
Christopher
Bild
AMD K6 // 166MHZ // 16 MB-RAM // 2 MB On-Board Grafikchip // 1,6 GB-HDD // 4-Fach CD-Laufwerk :mrgreen:
Benutzeravatar
Christopher
Mitglied
 
Beiträge: 1684
Registriert: 18.09.2005
Wohnort: Gütersloh(NRW)

Beitragvon mobi am 16.07.2006, 10:10

Das mußt du über eine Bounding Box (hitTest) machen. Es wird überprüft ob die blauen Rahmen wenn du sie makierst kolliedieren. Da überprüft er dann die beiden MovieClip die deines Helden und die des Objektes ob sie Kolliedieren. Ich habe dir mal eine Funktion zusammmengeschrieben. Denke mal du weißt schon wie es verwenden mußt :). Held = dein Flugzeug etc. mußt halt die namen austauschen. Und objekt = die gegenstände. Es gibt noch eine genauere Methode zum überprüfen die ist aber bißchen aufwendiger.

Code: Alles auswählen
function kollisonTest ()

{
if (_root.held_mc.hitTest (_root.obejekt_mc) )
{
trace ("boing!");
  }
    }


Einfügen hinter jeder Bewegung
kollisonTest ()


MFg
<Oasis> brb
<passi> ok
<Oasis> re
<passi> wb
<Oasis> thx
<passi> np
<Oasis> cs?
<passi> ip?
<spanky> ihr spinnt doch
mobi
Mitglied
 
Beiträge: 20
Registriert: 16.12.2005

Beitragvon Liam am 16.07.2006, 15:38

Ich hab es mit dem hitTest bereits verwirklicht, nur was soll ich ihm da sagen, dass er nicht weiter darf?

An Stelle Deines "trace ("boing!");". So hatte ich mir das auch gedacht, nur der Befehl der sagt, nicht auf den MovieClip drauf, da weiß ich nicht wie ichs machen soll...

Was mir einfallenwürde wäre, den Winkel zu berechnen und das Fahrzeug dann um die Fahrtgeschw. abprallen zu lassen genau rüchwärts aber das ist umständlich un da wüste ich auch nicht recht wie ichs machen sollte.
Liam
Mitglied
 
Beiträge: 16
Registriert: 26.05.2005

Beitragvon mobi am 16.07.2006, 22:32

Du willst also dein Fahrzeug wenn es den auf ein Hinderniss prallt. Rückwärts fliegen lassen. Da ist die frage wie ist den die Spieloberfläche generiert? Zufällig oder statisch?
Wegen dem Trace das kommt nur im Ausgabe fenster in der Entwickler oberfläche. um in stoppen zulassen einfach stop ausführen
<Oasis> brb
<passi> ok
<Oasis> re
<passi> wb
<Oasis> thx
<passi> np
<Oasis> cs?
<passi> ip?
<spanky> ihr spinnt doch
mobi
Mitglied
 
Beiträge: 20
Registriert: 16.12.2005

Beitragvon Liam am 16.07.2006, 23:41

mobi hat geschrieben:um in stoppen zulassen einfach stop ausführen


dann fährt er nicht weiter, waaaas? Das muss ich mal probieren, dachte nicht, dass Stop() das könnte. Abprallen sagte ich nur, weil ich nicht weiß wie mans stoppen sollte. Nur, wenn er dann im Gestein(an der äußersten Kante) steht, dann ist doch der hitTest immer true und er kann nichtmal zurück oder?

Trace ist klar, nur stop() muss ja dann an die Stelle.

EDIT: Also wie ich dachte, stop hat da keine Wirkung...

Ich habe einfach einem MovieClip alsGelände erstellt, also statisch.
Liam
Mitglied
 
Beiträge: 16
Registriert: 26.05.2005

Beitragvon mobi am 17.07.2006, 09:12

Ja so ganz leicht geht es nicht :) okay also erste frage soll er nun zurück oder willst ihn nur stoppen ? Willst du das er nicht am blauen rahmen abprallt sondern wirklich am gestein ? wenn ich das weiß kann ich mal was zusammen tippen :)

MFg
<Oasis> brb
<passi> ok
<Oasis> re
<passi> wb
<Oasis> thx
<passi> np
<Oasis> cs?
<passi> ip?
<spanky> ihr spinnt doch
mobi
Mitglied
 
Beiträge: 20
Registriert: 16.12.2005

Beitragvon Liam am 17.07.2006, 09:52

Ja, ich möchte, dass er stoppt am Gestein. Wenn Du das tippen würdest wäre ich seht froh, erklärungen brauchst Du nicht zwangsweise daranschreiben, falls ich was nicht verstehe, frage ich noch einmal.
Liam
Mitglied
 
Beiträge: 16
Registriert: 26.05.2005


Zurück zu Flash

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast