Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Würfel durch Höhenterrain mit Irrlicht steuern...

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 18.10.2009, 17:05    Titel: Würfel durch Höhenterrain mit Irrlicht steuern... Antworten mit Zitat

Habe mal ein Probelauf mit Irrlicht und 2. normalen Screen gestartet mit einem steuerbaren Würfel im Höhenterrain. Der kleine Screen muss aktiv sein(mit Maus reinklicken), damit im Irrrlichtfenster die Steuerungsdaten umgesetzt werden. Den 2. kleinen Screen kann man parallel nutzen um Daten darzustellen von evt den Irrlichtdaten usw.

Tasten für die Cam : q,w,a,s,y,x,e,r,d,f,c,v
Man kann hier schön die Lage der Cam sehen , in welchen Richtungen das Ding gedreht werden kann. Auch schön um eine Flugzeug zu steuern.

Tasten um den Würfel zu drehen : z,i
Tasten um den Würfel vorwärts und rückwärts bewegen : u,j

Irrlicht für FreeBasic zum runterladen:
http://www.freebasic.net/forum/viewtopic.php?t=3584&highlight=irrlciht


Code:



#include "IrrlichtWrapper.bi"
#include "fbgfx.bi"
USING FB

Const As Double pi = 3.1415926, pi_180 = pi / 180

Declare Sub set_camera()

DIM Shared Terrain as irr_terrain
DIM Shared TerrainNode as irr_node
DIM Shared TerrainTexture0 as irr_texture
DIM Shared TerrainTexture1 as irr_texture
DIM Shared Camera as irr_camera
DIM Shared CameraNode as irr_node
DIM Shared MeshTexture as irr_texture
DIM Shared TestNode as irr_node

dim Shared cxs as Single,cys as Single,czs as Single
Dim Shared tx As Single,ty As Single,tz As Single
Dim Shared nx As Single,nz As single
dim Shared cx as Single,cy as Single,cz as Single
dim Shared ccx as Single,ccy as Single,ccz as Single
Dim Shared nw As Single,x1 As Single,y1 As Single,sw As Single

ScreenRes 300,200,32
SCREENCONTROL SET_WINDOW_POS, 10,200

IrrStart( IRR_EDT_OPENGL, 640, 480, IRR_BITS_PER_PIXEL_32, _
        IRR_WINDOWED, IRR_SHADOWS, IRR_IGNORE_EVENTS )

IrrSetWindowCaption( "terrain-test" )
IrrTransparentZWrite

Terrain = IrrAddTerrain( "./media/splatter-height.tga" )
IrrScaleTexture( Terrain, 1.0, 60.0)
TerrainNode = Terrain
IrrSetNodeScale( TerrainNode, 40.0, 2.4, 40.0 )

TerrainTexture0 = IrrGetTexture( "./media/terrain-texture.jpg" )
TerrainTexture1 = IrrGetTexture( "./media/detailmap3.jpg" )
IrrSetNodeMaterialTexture( TerrainNode, TerrainTexture0, 0 )
IrrSetNodeMaterialTexture( TerrainNode, TerrainTexture1, 1 )
IrrSetNodeMaterialFlag( TerrainNode, IRR_EMF_LIGHTING, IRR_OFF )
IrrSetNodeMaterialType ( TerrainNode, IRR_EMT_DETAIL_MAP )
IrrSetNodeMaterialFlag( TerrainNode, IRR_EMF_FOG_ENABLE, IRR_ON )
IrrSetFog ( 64,100,128, IRR_EXPONENTIAL_FOG, 0.0,10000.0, 0.5 )

MeshTexture = IrrGetTexture( "./media/texture.jpg" )
TestNode = IrrAddTestSceneNode
IrrSetNodeScale( testnode, 2,2,2 )
IrrSetNodeMaterialTexture( TestNode, MeshTexture, 0 )
IrrSetNodeMaterialFlag( TestNode, IRR_EMF_LIGHTING, IRR_OFF )
   
CameraNode = IrrAddCamera( 0,0,0, 0,0,0 )

cxs=1800
cys=500
czs=2500
tx=1500
tz=2000
sw=1

IrrTransparentZWrite
IrrSetCameraClipDistance( CameraNode, 12000 )
IrrSetNodePosition( CameraNode, cxs,cys,czs )

While IrrRunning
    Sleep 2
    IrrBeginScene( 64, 100, 125 )
   
    If multikey( FB.SC_q ) Then   
        cx=cx-0.005
        set_camera()
    End If   
    If multikey( FB.SC_w ) Then   
        cx=cx+0.005
        set_camera()
    End If
    If multikey( FB.SC_a ) Then   
        cy=cy+0.005
        set_camera()
    End If
    If multikey( FB.SC_s ) Then   
        cy=cy-0.005
        set_camera()
    End If
    If multikey( FB.SC_z ) Then   
        cz=cz-0.005
        set_camera()
    End If
    If multikey( FB.SC_x ) Then   
        cz=cz+0.005
        set_camera()
    End If
   
    If multikey( FB.SC_e ) Then   
        ccx=ccx+2
        set_camera()
    End If   
    If multikey( FB.SC_r ) Then   
        ccx=ccx-2
        set_camera()
    End If   
    If multikey( FB.SC_d ) Then   
        ccy=ccy+2
        set_camera()
    End If
    If multikey( FB.SC_f ) Then   
        ccy=ccy-2
        set_camera()
    End If
    If multikey( FB.SC_c ) Then   
        ccz=ccz+2
        set_camera()
    End If
    If multikey( FB.SC_v ) Then   
        ccz=ccz-2
        set_camera()
    End If
   
    If MultiKey( FB.SC_u ) Then
       x1=Sin(nw*pi_180)*sw
      y1=Cos(nw*pi_180)*sw
      nx+=x1
      nz+=y1
    End If

    If multikey( FB.SC_j ) Then
      x1=Sin(nw*pi_180)*sw
      y1=Cos(nw*pi_180)*sw
      nx-=x1
      nz-=y1     
    End If
   
    If multikey( FB.SC_i ) Then   
        nw=nw+1
    End If
    If multikey( FB.SC_y ) Then   
        nw=nw-1
    End If
   
    ty = IrrGetTerrainTileHeight( Terrain, tx+nx, tz+nz)
    IrrSetNodePosition( testnode, tx+nx, ty+10, tz+nz)
    IrrSetNodeRotation(testnode,0,nw,0)
   
    IrrDrawScene
    IrrEndScene
WEND

IrrStop

Sub set_camera()
    IrrRevolveCamera(CameraNode, cx,cy,cz, ccx,ccy,ccz )
    cx=0
    cy=0
    cz=0
    ccx=0
    ccy=0
    ccz=0
End Sub

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz