panzersteuerung

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

SYSThern

Betreff: panzersteuerung

BeitragFr, Feb 08, 2008 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
also hab bei meinem anderen spiel battlpark einen bug entdeckt
und zwar habe ich so eine steuerung wie bei einen panzer

wenn ich den lauf (wo dei rakete rauskommt) drehe dann schießt er auch in die richtung aber wenn ich dann den grundkörper des panzers drehe dreht sich die rakete auch und der schuss geht daneben

code:
Code: [AUSKLAPPEN]

Graphics3D 1024,768,32,1
SetBuffer BackBuffer()

;laden der Daten

;modelle

grundteil=LoadMesh ("grundteil1.b3d")
teildreh=LoadMesh ("teil1dreh.b3d",pivot)
reifenvorne=LoadMesh ("reifenvorn1.b3d")
reifenhinten=LoadMesh ("reifenhinten1.b3d")
cargun=LoadMesh ("cargun.b3d")
Global park = LoadMesh("carpark1.b3d")
wasser=LoadMesh("wasser1.b3d")
;bilder texturen



;variablen
 Local ms=20
 Local cx#
 Local cy#


Type schuss
Field kugel
End Type
Global s.schuss


;camera
camera=CreateCamera()
MoveEntity camera,0,10,-20
CameraRange camera ,0.01,1000

;licht
licht=CreateLight()
RotateEntity licht,0,90,0
;park

PositionEntity park,0,-3,0
EntityType park,1
;wasser
PositionEntity wasser,0,-1,0
;car
ScaleEntity grundteil,0.5,0.5,0.5
ScaleEntity teildreh ,0.5,0.5,0.5
ScaleEntity reifenvorne ,0.5,0.5,0.5
ScaleEntity reifenhinten ,0.5,0.5,0.5
ScaleEntity cargun,0.5,0.5,0.5


EntityType grundteil,2
EntityRadius grundteil,6.2



While Not KeyHit(1)
EntityParent teildreh,grundteil
EntityParent reifenvorne,grundteil
EntityParent reifenhinten,grundteil
EntityParent cargun,teildreh
EntityParent camera,teildreh
EntityParent camera,cargun
HidePointer

mxs=MouseXSpeed()*ms ;(20)
mys=MouseYSpeed()*ms ;(20)

cx#=EntityPitch(camera)+mys*0.01
cy#=EntityYaw(teildreh)-mxs*0.01
If cx#>50 Then cx#=50
If cx#<-50 Then cx#=-50

 
MoveMouse 512,384

;bewegen
RotateEntity teildreh,0,cy,0

RotateEntity camera,cx,0,0








If KeyDown( 32 )Then TurnEntity grundteil,0,-1,0
If KeyDown( 30 )Then TurnEntity grundteil,0,1,0
If KeyDown( 31 )Then
 MoveEntity grundteil,0,0,-1

EndIf
If KeyDown( 17 )Then
 MoveEntity grundteil,0,0,.5


EndIf
If KeyDown( 57) Then MoveEntity grundteil,0,1,0


;schießen
If MouseHit(1) Then

;Schuss abfeuern
s.schuss = New schuss
 s\kugel = CreateSphere()
 EntityColor s\kugel ,255,0,0

 EntityType s\kugel,3
 RotateEntity s\kugel,EntityPitch(teildreh), EntityYaw(teildreh),0
 PositionEntity s\kugel ,EntityX(grundteil),EntityY (grundteil),EntityZ(grundteil)
Else If MouseHit(1) =False Then

EndIf
;Alle schüsse abfragen
For s.schuss = Each schuss
 MoveEntity s\kugel, 0, 0, 5
Next
;zoom
Local zoom#=1
   If MouseDown(2)  Then
   zoom#=2

   Else If Not MouseDown(2) Then
   zoom#=1
 

   EndIf
CameraZoom camera,zoom#








;phisik


;gravitation
MoveEntity grundteil,0,-0.5,0

;collision
Collisions 2,1,2,2
AntiAlias 1

UpdateWorld
RenderWorld
Flip
Wend


~EDITIERT~

Bitte benutze in Zukunft die code-Tags für deine Quelltexte.
hamZta
 

Tpro

BeitragSa, Feb 09, 2008 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn das so dein orginal Quelltext ist solltest du dich definitiv mal zu Unterprogrammtechniken informieren ( Funktionen etc) das machte das ganze auch besser zu lesen und damit leichter Fehler zu finden!

so kannst du z.B auch einfach eine Function machen :

Code: [AUSKLAPPEN]


 Function schiessen()
  ;hier neuen s\kugel usw
 End function

 if mousehit(1) then schiessen()



Das ist erstens leichter zu lesen und zu verstehen, und auserdem könnte es sogar sein das das deinen Fehler behebt!

Auserdem solltest du die s\kugel-entitys auch irgendwann wieder freigeben!
Der Optimist: "Das Glas ist halb voll"
Der Pessimist: "Das Glas ist halb leer"
Der Ingenieur: "Das Glas ist doppelt so groß wie es sein müsste"

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group