Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-03-2004, 16:02   #1 (permalink)
flashconsultant
 
Registriert seit: Dec 2001
Ort: Wiesbaden
Beiträge: 124
(Y- )Position einer Spielfigur auf einer Strecke berechnen

Hallo zusammen,

ich entwickele gerade ein Spiel, in dem ich einen Streckenverlauf habe. Der Streckenverlauf besteht aus einem in einem Array gespeicherten Höhenprofil.
wenn die Spielfigur startet, wird die Strecke gezeichnet und scrollt von links nach rechts, während die Figur immer in der Mitte des Bildschirms steht. Die Strecke scrollt quasi unter der Figur hinweg.
Die Bewegung der Strecke wird über eine onEnterFrame Funktion in der Spielfigur aufgerufen.

Mein Problem ist jetzt, die Y-Position (also richtige Höhe) der Spielfigur auf der Strecke zu berechnen. Habe zwar schon einen Algorythmus, allerdings macht die Figur beim "überfahren" der Höhenmarker aus dem Array immer unschöne Sprünge.

wär super, wenn mir jemand hierfür eine Lösung vorshclagen könnte.

Zur veranschaulichung hier ein paar Codeschnipsel:

Streckenobjekt:
PHP-Code:
function Track()
{
// length in pixels
this.distance
// profile Array
this.profile
// aktuelle Position
this.currentPos

neue Strecke erzeugen:
PHP-Code:
myTrack = new Track()
myTrack.profile = new Array(9,1,9,1,9,1,9,1,8,1,9,3,5,7,4,1,8,3,6,8,6,7,8);

myTrack.currentPos 0
wenn die Figur losfährt, wird die Trackpos entsprechend der geschwindigkeit erhöht.. in jedem Frame wird die Strecke gezeichnet. Das ganze funktioniert auch einwandfrei.

die Positionsberechnung der Spielfigur sieht momentan noch so aus (gekürzt & rohfassung):
PHP-Code:
Biker.prototype.calculateBikerPos = function()
{

   var 
profile _root.myTrack.profile;
   var 
currentPos _root.myTrack.currentPos;
   var 
bikerPosOnTrack currentPos this.offset;
// die steigungspunkt der strecke haben einen Abstand von 300px   
   
var bikerleftMarker Math.floor(bikerPosOnTrack/300);
   
   var 
leftHeight 400 - (profile[bikerleftMarker]*10);

   
   var 
rightHeight 400 - (profile[bikerleftMarker+1]*10);
   
   var 
absHeight leftHeight rightHeight;
   var 
steigung absHeight/300;
   var 
steigungsAbsHeight steigungsleftHeight steigungsrightHeight;
   

  
  var 
leftMarkerOfTrackPosition _root.myTrack.leftOutMarker*300;
  
// var leftMarkerX = bikerPosOnTrack%300;
   
   
var bikerdistanceFromleft bikerPosOnTrack-leftMarkerOfTrackPosition;
   
_root.distancefield.text "x-" bikerdistanceFromleft "-x"
   var 
bikerY leftHeight + ((bikerdistanceFromleft steigung)*-1);
   
this.mcObj._y bikerY;


Wenn ich das ganze debugge, macht die Figur an jedem Höhenmarker einen sprung nach oben oder unten. Komme leider nicht hinter das Problem. Vielleicht kann mir jemand von Euch helfen!

Danke im voraus

Sebastian
wmadam ist offline   Mit Zitat antworten
Alt 30-03-2004, 09:02   #2 (permalink)
flashconsultant
 
Registriert seit: Dec 2001
Ort: Wiesbaden
Beiträge: 124
keiner eine idee?

Geändert von wmadam (31-03-2004 um 07:53 Uhr)
wmadam 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



Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele