Intelligente Kamera

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Fuchsi

Betreff: Intelligente Kamera

BeitragSa, März 18, 2006 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi !
Ich hab ne ungewöhnlicheFrage: Ich benutze folgenden Code für meine
intelligente Kamera.
Code: [AUSKLAPPEN]

PointEntity      cam,player
   RotateEntity   player,0,EntityYaw(piv),0
   RotateEntity   piv,EntityPitch(piv)+MouseYSpeed()*0.1,EntityYaw(piv)-MouseXSpeed()*0.1,0
   
   
   PositionEntity    target,0,8,-20
   
    dx#=         EntityX(target,True)-EntityX(cam)
    dy#=         EntityY(target,True)-EntityY(cam)
    dz#=         EntityZ(target,True)-EntityZ(cam)
    TranslateEntity cam,dx*.1,dy*0.1,dz*.1
   MoveMouse       gfx_breite/2,gfx_hoehe/2


Das funktioniert alles prächtig. Allerdings hab ich mir den das untere Codestück wo rauskopiert und ich weiß nich wieso oder wie das alles funktioniert. Kann mir einer den Code erklären ?

Gruß Fuchsi !
 

HW

BeitragSa, März 18, 2006 12:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
dx#=         EntityX(target,True)-EntityX(cam)
    dy#=         EntityY(target,True)-EntityY(cam)
    dz#=         EntityZ(target,True)-EntityZ(cam)
    TranslateEntity cam,dx*.1,dy*0.1,dz*.1

Das hier sorgt für eine langsame Bewegung zum Spieler hin. Znächst wird die Differenz der Koordinaten von Kamera und Spieler errechnet und dann die Kamera um ein Zehntel davon bewegt.
Code: [AUSKLAPPEN]
MoveMouse       gfx_breite/2,gfx_hoehe/2

Das hier bewegt die Maus in die Mitte des Bildschirms, was in vielen Ego-Shootern von Nöten ist, damit folgender Code richtig funktioniert:
Code: [AUSKLAPPEN]
RotateEntity   piv,EntityPitch(piv)+MouseYSpeed()*0.1,EntityYaw(piv)-MouseXSpeed()*0.1,0

Dieser Code hat nämlich die Schwachstelle, dass MouseSpeed nichts Richtiges mehr zurückliefert, falls die Maus an den Bildschirmrand bewegt wird. Daher muss bei Ego-Shootern die Maus in der Mitte gehalten werden.

Fuchsi

BeitragSa, März 18, 2006 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke !
Allerdings hast du das , was ich genau wissen wollte nich erklärt.
Was bringt es, dass man die Differenz zwischen Cam und Target ausrechnet ?

StepTiger

BeitragSa, März 18, 2006 13:00
Antworten mit Zitat
Benutzer-Profile anzeigen
daraus entsteht eine langsame bewegung.

du errechnest damit, wie weit sich die kamera bewegen muss.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

HW

BeitragSa, März 18, 2006 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Exakt. Du könntest natürlich auch die Kamera sofort zu der Position des Spielers setzen, aber das wird noch keine Bewegung. Mit einer If Prüfung, die die Kamera bewegt, wenn die Koordinaten unterschiedlich sind, würde das natürlich auch gehen, die Differenz auszurechnen ist allerdings schneller.

Fuchsi

BeitragSa, März 18, 2006 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx ! Razz

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group