problem mit steuerung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

hitokiri

Betreff: problem mit steuerung

BeitragSa, Apr 09, 2005 8:51
Antworten mit Zitat
Benutzer-Profile anzeigen
also das sind die variablen
[syntax="bb"]
Const fightermaxforward# =5
Const fightermaxbackward# =-4;negative value!
Const fightermaxup# =-4;negative value!
Const fightermaxdown# =4
Const fighterforwardstep# =0.25
Const fighterbackwardstep# =-0.25;negative value!
Const fighterupstep# =-0.25;negative value!
Const fighterdownstep# =0.25
Global bulletcount2
Global aliencount2
Const leveloutspeed#=0.15
[/syntax]


bewegung ist nur in 4 dimensionen möglich und das "ausbalancieren" auf 0 ist beim normalen flug in die vier richtung auch möglich, durch geschicktes drücken dann auch fast 16 dimensionen steuerung möglich.
jetzt hatte ich etwas ähnliches geschrieben um das schiff langsam auszubremsen wenn es auf den bildschirmrand zugeht aber was ich auch versucht habe, entweder gab es a:
wirklichen bouncing effekt
b:
das schiff ist einfach über die edges rausgeflogen und es gab nen image doesn't exist error oder
c:
das schiff ist am bildschirmrand festgeklebt und liess sich dann nur noch in 2 dimensionen steuern.

ich hatte erst gedacht dass es vielleicht daran liegt dass ich manche variablen nicht als float deklariert hatte aber selbst bei angabe der bildschirmrand werte als float, so dass ein step ihn über den "threshold" bringen würde ist er kleben geblieben.
vorschläge ?

Hubsi

BeitragSa, Apr 09, 2005 10:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Dazu wärs nicht schlecht wenn wir den entsprechenden Code haben, mit den paar Konstanten da oben läßt sich nur raten Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

hitokiri

BeitragSa, Apr 09, 2005 10:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ups Embarassed
Code: [AUSKLAPPEN]
If KeyDown(key_right) And fighterxspeed < fightermaxforward Then
  If fighterx < screenwidth*0.8 Then
  fighterxspeed=fighterxspeed+fighterforwardstep
  EndIf
 
 If fighteryspeed < 0 Then
 fighteryspeed=fighteryspeed+leveloutspeed
 ElseIf fighteryspeed > 0 Then
 fighteryspeed=fighteryspeed-leveloutspeed
 EndIf

ElseIf KeyDown(key_left) And fighterxspeed > fightermaxbackward Then
  If fighterx > screenwidth/8 Then
  fighterxspeed=fighterxspeed+fighterbackwardstep
  EndIf
 If fighteryspeed < 0 Then
 fighteryspeed=fighteryspeed+leveloutspeed
 ElseIf fighteryspeed > 0 Then
 fighteryspeed=fighteryspeed-leveloutspeed
 EndIf

ElseIf KeyDown(key_up) And fighteryspeed > fightermaxup Then
  If fightery > screenheight/8 Then
  fighteryspeed=fighteryspeed+fighterupstep
  EndIf

 If fighterxspeed < 0 Then
 fighterxspeed = fighterxspeed+leveloutspeed
 ElseIf fighterxspeed > 0 Then
 fighterxspeed=fighterxspeed - leveloutspeed
 EndIf

ElseIf KeyDown(key_down) And fighteryspeed < fightermaxdown Then
  If fightery < screenheight*0.8 Then
  fighteryspeed=fighteryspeed+fighterdownstep
  EndIf
 
 If fighterxspeed < 0 Then
 fighterxspeed = fighterxspeed+leveloutspeed
 ElseIf fighterxspeed > 0 Then
 fighterxspeed=fighterxspeed - leveloutspeed
 EndIf

Else
 If fighterxspeed < 0 Then
 fighterxspeed = fighterxspeed+leveloutspeed
 ElseIf fighterxspeed > 0 Then
 fighterxspeed=fighterxspeed - leveloutspeed
 EndIf
 If fighteryspeed < 0 Then
 fighteryspeed=fighteryspeed+leveloutspeed
 ElseIf fighteryspeed > 0 Then
 fighteryspeed=fighteryspeed-leveloutspeed
 EndIf
EndIf


fighterx=fighterx+fighterxspeed
fightery=fightery+fighteryspeed



ich hatte es nun schon auf verschiedene weisen probiert, aber wie immer, entweder abrupter stop oder am rand hängen bleiben oder drüber hinausschiessen. den abrupten stopp kann ich mir erklären, das darüber hinausschiessen auch irgendwo, aber das am rand kleben bleiben kapier ich einfach nich.
also so schiesst er natürlich über den rand hinaus.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group