Ich möchte die Roberter anwählen und durch die gegend schicken können.
Hier mein bisheriger code:
Code: Alles auswählen
InitEngine3D()
#CameraSpeed = 20
#max=10
Dim marked.b(#max)
IncludeFile "Screen3DRequester.pb"
DefType.f KeyX, KeyY, MouseX, MouseY
#RobotMesh = 2
#RobotTexture = 2
Dim movX.b(#max)
Global x.b
Dim movZ.b(#max)
Dim movY.b(#max)
;TransparentSpriteColor(0,0,0,0)
Add3DArchive("3d\", #PB_3DArchive_FileSystem)
LoadImage(1,"grafic\cursor.bmp")
InitSprite()
InitSprite3D()
Sprite3DQuality(1)
InitKeyboard()
InitMouse()
ClearScreen(0,0,0)
If Screen3DRequester()
AmbientColor(RGB(255,255,255))
CreateMaterial (0, LoadTexture(0, "Terrain_Texture.jpg"))
AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), 1)
CreateTerrain("Terrain.jpg", MaterialID(0), 5, 1, 5, 4)
FOV = 65
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0, 500, 800, 400)
CreateCamera(1,0,0,25,20)
CameraLocate(1, 500, 800, 400)
RotateCamera(0,0,-90,0)
RotateCamera(1,0,-90,0)
CameraRenderMode(1,#PB_Camera_Wireframe)
CameraFOV(0,65)
SkyDome("sky.jpg",1)
LoadMesh(#RobotMesh, "Robot.mesh")
LoadTexture(#RobotTexture, "r2skin.jpg")
CreateMaterial(1,TextureID(#RobotTexture))
For x=1 To #max/2
CreateEntity(x,MeshID(#RobotMesh),MaterialID(1))
EntityLocate(x,500,10,300+x*50)
AnimateEntity(x, "Walk")
Next
For x=1 To #max/2
CreateEntity(x+#max/2,MeshID(#RobotMesh),MaterialID(1))
EntityLocate(x+#max/2,400,10,300+x*50)
AnimateEntity(x+#max/2, "Walk")
Next
For x=1 To #max
movX(x)=3
Next
Fog(RGB(220,220,220),1,1000,1500)
FreeCamera(1)
CreateLight(1,RGB(255,0,0),400,0.6,400)
MouseLocate(250,250)
RotateCamera(0,0,30,0)
mov=3
;MessageRequester("info","sceenhight:"+Str(ScreenHeight)+" ScreenWitdh:"+Str(ScreenWidth))
Repeat
Screen3DEvents()
For x=1 To #max
If EntityX(x)=>800
RotateEntity(x,180,0,0)
movX(x)=-3
ElseIf EntityX(x)<=250
movX(x)=3
RotateEntity(x,180,0,0)
EndIf
If TerrainHeight(EntityX(x),EntityZ(x))>EntityY(x)+1
movY(x)=3
If movX(x)>0
movX(x)=2
ElseIf movX(x)<0
movX(x)=-2
EndIf
ElseIf TerrainHeight(EntityX(x),EntityZ(x))<EntityY(x)+1
movY(x)=-3
If movX(x)>0
movX(x)=4
ElseIf movX(x)<0
movX(x)=-4
EndIf
Else
movY(x)=0
EndIf
MoveEntity(x,movX(x),movY(x),0)
Next
LightColor(1,RGB(Random(255),Random(255),Random(255)))
ExamineMouse()
CameraLocate(0,CameraX(0),800,CameraZ(0))
KeyX=0
KeyY=0
If MouseX()=0
KeyX = -#CameraSpeed
ElseIf MouseX()>=(ScreenWidth-2)
KeyX = #CameraSpeed
EndIf
If MouseY()=0
KeyY = -#CameraSpeed
ElseIf MouseY()>=(ScreenHeight-2)
KeyY = #CameraSpeed
EndIf
ExamineKeyboard()
MouseX = 0
If KeyboardPushed(#PB_Key_Pad4)
MouseX=-#CameraSpeed/2
ElseIf KeyboardPushed(#PB_Key_Pad6)
MouseX=#CameraSpeed/2
EndIf
MouseY=0
If KeyboardPushed(#PB_Key_Pad2)
MouseY=-#CameraSpeed/2
ElseIf KeyboardPushed(#PB_Key_Pad8)
MouseY=#CameraSpeed/2
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY=-#CameraSpeed*2
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY=#CameraSpeed*2
EndIf
If KeyboardPushed(#PB_Key_Left)
KeyX=-#CameraSpeed*2
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX=#CameraSpeed*2
EndIf
If KeyboardPushed(#PB_Key_F12)
GrabSprite(2,0,0,ScreenWidth,ScreenHeight)
SaveSprite(2,"Screenshot.bmp")
EndIf
Height.f = TerrainHeight(CameraX(0), CameraZ(0))
If MouseWheel()>0
FOV - 1 : If FOV < 40:FOV=40:EndIf
CameraFOV(0,FOV):EndIf
If MouseWheel()<0
FOV + 1 : If FOV > 120:FOV=120:EndIf
CameraFOV(0,FOV):EndIf
RotateCamera(0, MouseX, MouseY, RollZ)
MoveCamera (0, KeyX, -KeyY, 0)
;RotateCamera(1, MouseX, 0, RollZ)
;MoveCamera (1, KeyX, -KeyY, 0)
RenderWorld()
Screen3DStats()
If MouseButton(1)=1
If mark=0
mark=1
startX=MouseX()
startY=MouseY()
For x=1 To #max
marked(x)=0
Next
EndIf
StartDrawing(ScreenOutput())
DrawingMode(4)
Box(startX,startY,MouseX()-startX,MouseY()-startY,RGB(0,255,0))
StopDrawing()
Else
mark=0
EndIf
StartDrawing(ScreenOutput())
DrawImage(UseImage(1),MouseX(),MouseY())
DrawingMode(1)
FrontColor(255,255,255)
Locate(1,1)
DrawText("X:"+Str(CameraX(0)))
Locate(1,20)
DrawText("Y:"+Str(CameraY(0)))
Locate(1,40)
DrawText("Z:"+Str(CameraZ(0)))
Locate(1,60)
DrawText("MausX:"+Str(MouseX()))
Locate(1,80)
DrawText("MausY:"+Str(MouseY()))
StopDrawing()
;DisplayTransparentSprite(1,MouseX(),MouseY())
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf

Danke schonmal für die Antwort.