funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 20.04.2010, 13:42 Titel: |
|
|
Dies ist ein Quadro-Hubschrauber.
Mit Q/W rechts und links drehen.
Mit W/S vorwärts und rückwärts.
Mit T/B hoch und runter.
Variable "nw" zum drehen, "dhh" hoch und runter, "sw" vor-und zurück.
tz und nz sind nur die Startpositionen.
ssw wird gesetzt, wenn der Hubschrauber abgestürtz ist.
Alles wird in horizontraler Position gemacht, ohne Neigung und Rollen.
Dieses sind eigentlich die Faktoren dafür:
x1=SIN(nw*pi_180)*sw
y1=COS(nw*pi_180)*sw
nx+=x1
nz+=y1
IrrSetNodePosition(PivotNode, tx+nx,dhh, tz+nz)
IrrSetNodeRotation(PivotNode,ssw,nw,0.0)
Gruss
Code: |
#include "IrrlichtWrapper.bi"
#include "fbgfx.bi"
USING FB
Const As Double pi = 3.1415926, pi_180 = pi / 180
Declare Sub terrain_1()
Declare Sub transparent_0()
Dim Shared Mesh As irr_mesh
Dim Shared MeshTexture As irr_texture
DIM Shared Material as irr_material
Dim Shared CentreNode As irr_node
Dim Shared EdgeNode1 As irr_node
Dim Shared EdgeNode2 As irr_node
Dim Shared PivotNode As irr_node
Dim Shared PivotNode1 As irr_node
Dim Shared PivotNode2 As irr_node
Dim Shared CentreNode0 As irr_node
Dim Shared EdgeNode10 As irr_node
Dim Shared EdgeNode20 As irr_node
Dim Shared PivotNode0 As irr_node
Dim Shared PivotNode10 As irr_node
Dim Shared PivotNode20 As irr_node
Dim Shared CentreNode1 As irr_node
Dim Shared PivotNode30 As irr_node
Dim Shared As Single RRotation ,drr,dhh
Dim Shared As Integer test_h,test_r,test_c
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 As Single Yaw, Pitch,Roll, Drive, Strafe,Elevate,tra_1,tra_2
Dim Shared As Single x1 ,y1 ,sw
Dim Shared As Single nz ,nw,nx ,tx,tz,st,ssw
ScreenRes 300,200,32
SCREENCONTROL SET_WINDOW_POS, 10,120
IrrStart( IRR_EDT_OPENGL, 800, 600, IRR_BITS_PER_PIXEL_32, _
IRR_WINDOWED, IRR_SHADOWS, IRR_IGNORE_EVENTS )
IrrSetWindowCaption( "Example 10: Terrain and Fog" )
Terrain = IrrAddTerrain( "./media/terrain-heightmap.bmp" )
TerrainNode = Terrain
IrrSetNodeScale( TerrainNode, 1.0, 0.0, 1.0 )
TerrainTexture0 = IrrGetTexture( "./media/terrmap.jpg" )
TerrainTexture1 = IrrGetTexture( "./media/detailmap3.jpg" )
IrrSetNodeMaterialTexture( TerrainNode, TerrainTexture0, 0 )
IrrSetNodeMaterialTexture( TerrainNode, TerrainTexture1, 1 )
IrrScaleTexture( Terrain, 1.0,32.0 )
IrrSetNodeMaterialFlag( TerrainNode, IRR_EMF_LIGHTING, IRR_OFF )
IrrSetNodeMaterialType ( TerrainNode, IRR_EMT_DETAIL_MAP )
'--------------------------------------------------------
PivotNode = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode, 0.0, 0.0, 0.0 )
CentreNode = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/rot.png")
IrrSetNodeMaterialTexture( CentreNode, MeshTexture, 0)
IrrSetNodeScale( CentreNode, 1.8,0.03,0.03 )
IrrAddChildToParent(CentreNode, PivotNode)
PivotNode1 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode1, 0.0, 0.0, 0.0 )
EdgeNode1 = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/blau.png")
IrrSetNodeMaterialTexture( EdgeNode1, MeshTexture, 0 )
IrrSetNodeScale( EdgeNode1, 0.5,0.01, 0.04)
IrrAddChildToParent(EdgeNode1, PivotNode1)
PivotNode2 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode2, 0.0, 0.0, 0.0 )
EdgeNode2 = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/blau.png")
IrrSetNodeMaterialTexture( EdgeNode2, MeshTexture, 0 )
IrrSetNodeScale( EdgeNode2, 0.5,0.01, 0.04)
IrrAddChildToParent(EdgeNode2, PivotNode2)
IrrAddChildToParent(PivotNode1,PivotNode )
IrrSetNodePosition( PivotNode1, 8.7, 0.4, 0.0)
IrrAddChildToParent(PivotNode2,PivotNode )
IrrSetNodePosition( PivotNode2, -8.7, 0.4, 0.0)
'-------------------------------------------------------
PivotNode0 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode0, 0.0, 0.0, 0.0 )
CentreNode0 = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/rot.png")
IrrSetNodeMaterialTexture( CentreNode0, MeshTexture, 0 )
IrrSetNodeScale( CentreNode0, 1.8,0.03,0.03 )
IrrAddChildToParent(CentreNode0, PivotNode0)
PivotNode10 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode10, 0.0, 0.0, 0.0 )
EdgeNode10 = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/blau.png")
IrrSetNodeMaterialTexture( EdgeNode10, MeshTexture, 0 )
IrrSetNodeScale( EdgeNode10, 0.5,0.01, 0.04)
IrrAddChildToParent(EdgeNode10, PivotNode10)
PivotNode20 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode20, 0.0, 0.0, 0.0 )
EdgeNode20 = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/blau.png")
IrrSetNodeMaterialTexture( EdgeNode20, MeshTexture, 0 )
IrrSetNodeScale( EdgeNode20, 0.5,0.01, 0.04)
IrrAddChildToParent(EdgeNode20, PivotNode20)
IrrAddChildToParent(PivotNode10,PivotNode0 )
IrrSetNodePosition( PivotNode10, 8.7, 0.4, 0.0)
IrrAddChildToParent(PivotNode20,PivotNode0 )
IrrSetNodePosition( PivotNode20, -8.7, 0.4, 0.0)
'-------------------------------------------------------
PivotNode30 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode30, 0.0, 0.0, 0.0 )
CentreNode1 = IrrAddSphereSceneNode( 1.0, 16 )
MeshTexture = IrrGetTexture("./media/gruen.png")
IrrSetNodeMaterialTexture( CentreNode1, MeshTexture, 0)
IrrAddChildToParent(CentreNode1, PivotNode30)
'-------------------------------------------------------
IrrAddChildToParent(PivotNode0,PivotNode )
IrrSetNodePosition( PivotNode0, 0.0,0.0, 0.0)
IrrSetNodeRotation( PivotNode0, 0.0, 90.0, 0.0)
IrrAddChildToParent(PivotNode30,PivotNode )
IrrSetNodePosition( PivotNode30, 0.0,0.0, 0.0)
IrrSetAmbientLight( 1,1,1 )
Camera = IrrAddCamera( 0,0,0, 0,0,0 )
CameraNode = Camera
IrrSetNodePosition( CameraNode, 150, 20,140 )
IrrSetCameraClipDistance( Camera, 12000 )
dhh=1.0
drr=0
tx=100
tz=100
sw=0
ssw=0
test_c=0
While IrrRunning
IrrBeginScene( 220,220,220 )
Sleep 1
If multikey( FB.SC_u ) Then
yaw=yaw-0.002
terrain_1()
End If
If multikey( FB.SC_o ) Then
yaw=yaw+0.002
terrain_1()
End If
If multikey( FB.SC_i ) Then
drive=drive-0.1
terrain_1()
End If
If multikey( FB.SC_k ) Then
drive=drive+0.1
terrain_1()
End If
If multikey( FB.SC_j ) Then
strafe=strafe-0.1
terrain_1()
End If
If multikey( FB.SC_l ) Then
strafe=strafe+0.1
terrain_1()
End If
If multikey( FB.SC_y ) Then
elevate=elevate-0.05
terrain_1()
End If
If multikey( FB.SC_h ) Then
elevate=elevate+0.05
terrain_1()
End If
If multikey( FB.SC_r ) And test_c=0 Then
test_r=1
End If
If multikey( FB.SC_f ) And test_c=0 And dhh=1.0 Then
test_r=2
End If
If multikey( FB.SC_t ) And test_c=0 And drr=8.0 Then
test_h=1
End If
If multikey( FB.SC_b ) And test_c=0 Then
test_h=2
End If
If multikey( FB.SC_g ) And test_c=0 Then
test_h=3
End If
If MultiKey( FB.SC_e ) And test_c=0 And drr=8.0 Then
nw=nw+0.3
End If
If MultiKey( FB.SC_q ) And test_c=0 And drr=8.0 Then
nw=nw-0.3
End If
If MultiKey( FB.SC_w ) And test_c=0 And drr=8.0 Then
sw=sw+0.001
If sw > 0.1 Then sw=0.1
End If
If MultiKey( FB.SC_s ) And test_c=0 And drr=8.0 Then
sw=sw-0.001
If sw < -0.1 Then sw=-0.1
End If
If MultiKey( FB.SC_x ) And test_c=0 Then
If sw < 0.01 And sw > 0.0 Then sw=0
If sw > -0.01 And sw < 0.0 Then sw=0
End If
If MultiKey( FB.SC_z ) And test_c=1 then
dhh=1.0
drr=0
sw=0
ssw=0
test_c=0
endif
If test_h=1 Then
dhh = dhh+0.05
Print dhh
EndIf
If test_h=2 Then
dhh = dhh-0.05
If dhh < 1.0 Then dhh = 1.0 : test_h=3
Print dhh
EndIf
If test_r=1 Then
drr = drr+0.01
If drr > 8.0 Then tra_1=32.0 : tra_2=190.0: transparent_0()
If drr > 8.0 Then drr = 8.0 : test_r=4
EndIf
If test_r=2 Then
drr = drr-0.01
If drr < 7.0 Then tra_1=255.0 : tra_2=255.0 : transparent_0()
If drr < 0.0 Then drr = 0.0 : test_r=4
EndIf
If dhh < 2.0 And (sw > 0.02 Or sw < -0.02) Then
If sw < -0.02 Then
ssw=-20
Else
ssw=20
EndIf
sw=0
drr=1.0
tra_1=255.0 : tra_2=255.0 : transparent_0()
Print "Absturz"
test_r=2
test_c=1
EndIf
x1=Sin(nw*pi_180)*sw
y1=Cos(nw*pi_180)*sw
nx+=x1
nz+=y1
IrrSetNodePosition(PivotNode, tx+nx,dhh, tz+nz)
IrrSetNodeRotation(PivotNode,ssw,nw,0.0)
RRotation = RRotation+drr
IrrSetNodeRotation( PivotNode1, 0.0,RRotation, 0.0)
IrrSetNodeRotation( PivotNode2, 0.0,RRotation, 0.0)
IrrSetNodeRotation( PivotNode10, 0.0,RRotation, 0.0)
IrrSetNodeRotation( PivotNode20, 0.0,RRotation, 0.0)
IrrDrawScene
IrrEndScene
WEND
IrrStop
Sub transparent_0()
IrrSetNodeMaterialType( EdgeNode1, IRR_EMT_TRANSPARENT_VERTEX_ALPHA )
Material = IrrGetMaterial( EdgeNode1, 0 )
IrrMaterialVertexColorAffects( Material, ECM_NONE )
IrrMaterialSetAmbientColor ( Material, tra_1,tra_2,tra_2,tra_2 )
IrrMaterialSetDiffuseColor ( Material,tra_1,tra_2,tra_2,tra_2 )
IrrSetNodeMaterialType( EdgeNode2, IRR_EMT_TRANSPARENT_VERTEX_ALPHA )
Material = IrrGetMaterial( EdgeNode2, 0 )
IrrMaterialVertexColorAffects( Material, ECM_NONE )
IrrMaterialSetAmbientColor ( Material, tra_1,tra_2,tra_2,tra_2 )
IrrMaterialSetDiffuseColor ( Material,tra_1,tra_2,tra_2,tra_2 )
IrrSetNodeMaterialType( EdgeNode10, IRR_EMT_TRANSPARENT_VERTEX_ALPHA )
Material = IrrGetMaterial( EdgeNode10, 0 )
IrrMaterialVertexColorAffects( Material, ECM_NONE )
IrrMaterialSetAmbientColor ( Material, tra_1,tra_2,tra_2,tra_2 )
IrrMaterialSetDiffuseColor ( Material,tra_1,tra_2,tra_2,tra_2 )
IrrSetNodeMaterialType( EdgeNode20, IRR_EMT_TRANSPARENT_VERTEX_ALPHA )
Material = IrrGetMaterial( EdgeNode20, 0 )
IrrMaterialVertexColorAffects( Material, ECM_NONE )
IrrMaterialSetAmbientColor ( Material, tra_1,tra_2,tra_2,tra_2 )
IrrMaterialSetDiffuseColor ( Material,tra_1,tra_2,tra_2,tra_2 )
End Sub
Sub terrain_1()
IrrRevolveCamera ( Camera, Yaw, Pitch,Roll, Drive, Strafe,Elevate )
Yaw=0
Pitch=0
Roll=0
Drive=0
Strafe=0
Elevate=0
End Sub
|
|
|