schuss drehungs problem

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

masterman123

Betreff: schuss drehungs problem

BeitragSa, Jan 09, 2010 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich hab nen pivot die kamera drauf sitzt ich drehe die kamera hoch und runter und den pivot links und rechts , die kamera ist parent zum pivot also dreht die kamera sich mit

problem ist jetzt der schuss er soll am pivot sein,das geht ja aber wenn ich mich jetzt drehe bleibt der schuss nicht ander stelle sondern dreht sich mit dem pivot aber der schuss zeigt zur kamera und dadurch ist er an eineer anderen stelle
weiß nicht wie ichs hinbekomme

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,1
SetBuffer BackBuffer()

Type Schuss                   
Field x
Field y
Field z
Field s
End Type

Global magazin=10
Global waffea=1

;;;;;terrain
Global terr=LoadTerrain("heightmap1.bmp")
tex=LoadTexture("coolgrass2.bmp")
tex1=LoadTexture("gras.bmp")
tex2=LoadTexture("mapt1.bmp")
EntityTexture terr,tex,0,0
EntityTexture terr,tex1,0,1
EntityTexture terr,tex2,0,2
ScaleEntity terr,20,100,20
PositionEntity terr,-20*600,0,-20*600
EntityType terr,2

;;;;wasser
Global wasser=CreatePlane()
wassertex=LoadTexture("water.bmp")
EntityTexture wasser,wassertex,0,0
ScaleTexture wassertex,100,100
MoveEntity wasser,0,1,0
EntityAlpha wasser,0.5;durchsichtigkeit

;;;;kamera
Global cam=CreateCamera(camparent)
PositionEntity cam,0,108.5,0
CameraFogMode cam,1;nebel an\aus
CameraFogRange cam,1,9000
CameraFogColor cam,40,140,255
CameraRange cam,1,9000
CameraClsColor cam,40,140,255

;;;;;licht
light=CreateLight()
TurnEntity light,45,45,0

;;;;;waffe
waffe=LoadMesh("w_fiveseven.3ds")
PositionEntity waffe,3.5,107,5
RotateEntity waffe,105,0,270
EntityParent waffe,cam
ScaleMesh waffe,0.2,0.2,0.2

waffe1=LoadMesh("w_mp51.3ds")
waf=LoadTexture("w_mp510.bmp")
waf1=LoadTexture("w_mp511.bmp")
waf2=LoadTexture("w_mp512.bmp")
waf3=LoadTexture("w_mp513.bmp")
waf4=LoadTexture("w_mp514.bmp")
waf5=LoadTexture("w_mp515.bmp")
EntityTexture waffe1,waf,0,0
EntityTexture waffe1,waf1,0,1
EntityTexture waffe1,waf2,0,2
EntityTexture waffe1,waf3,0,3
EntityTexture waffe1,waf4,0,4
EntityTexture waffe1,waf5,0,5
PositionEntity waffe1,4.5,107,3.5
RotateEntity waffe1,100,0,90
EntityParent waffe1,cam
ScaleMesh waffe1,0.2,0.15,0.15
HideEntity waffe1

waffe2=LoadMesh("w_tmp1.3ds")
tex=LoadTexture("w_tmp10.bmp")
PositionEntity waffe2,4,106.5,5.5
RotateEntity waffe2,95,0,90
EntityParent waffe2,cam
ScaleMesh waffe2,0.2,0.15,0.15
EntityTexture waffe2,tex,0,0
HideEntity waffe2

;;;;pivot
camparent=CreatePivot()
PositionEntity camparent,0,100,0
EntityType camparent,1
EntityParent cam,camparent

;;;;mauszeiger
cursor=LoadImage("sight.bmp")

Collisions 1,2,2,2

EnableDirectInput(1)
;;;;hauptschleife
While Not KeyHit(1)

;;;;steurung
If KeyDown(17) Then
      MoveEntity camparent,0,0,0.5
   EndIf
   
   If KeyDown(31) Then
      MoveEntity camparent,0,0,-0.5
   EndIf
   
   If KeyDown(30) Then
      MoveEntity camparent,-0.5,0,0
   EndIf
   
   If KeyDown(32) Then
      MoveEntity camparent,0.5,0,0
   EndIf

If KeyHit(2) Then
  waffea=1
  magazin=10
EndIf


If KeyHit(3) Then
  magazin=100
  waffea=2
  ShowEntity waffe1
  HideEntity waffe
  HideEntity waffe2
EndIf

If KeyHit(4) Then
  magazin=50
  waffea=3
  ShowEntity waffe2
  HideEntity waffe
  HideEntity waffe1
EndIf

If waffea=1 Then
  ShowEntity waffe
  HideEntity waffe1
  HideEntity waffe2
   If MouseHit(1)
     magazin=magazin-1
   EndIf
   If magazin<0 Then
     magazin=0
   EndIf
   If KeyHit(19) Then
     magazin=10
   EndIf
EndIf

If waffea=2 Then
   If MouseDown(1)
     magazin=magazin-1   
  EndIf
   If magazin<0 Then
     magazin=0
   EndIf
   If KeyHit(19) Then
     magazin=100
  EndIf
EndIf   
     
If waffea=3 Then
  If MouseDown(1)
   magazin=magazin-1
  EndIf
  If magazin<0 Then
   magazin=0
  EndIf   
  If KeyHit(19) Then
   magazin=50
  EndIf
EndIf      

If MouseDown(1) Then
s.schuss = New Schuss  ;Neuer schuss erstellen
s\s = LoadSprite("schuss.bmp")   ;Schuss-Sprite laden
s\x =EntityX(camparent)   ;x,y und z Koordinate von der Figur speichern
s\y =EntityY(camparent)
s\z =EntityZ(camparent)
PositionEntity s\s,s\x,s\y+6.5,s\z+3   ;Schuss an die Figurposition positionieren
RotateEntity s\s ,EntityPitch(cam),EntityYaw(camparent),EntityRoll(cam) ;Schuss in die Richtige Richtung drehen
End If

For  s.schuss = Each schuss   
MoveEntity s\s,0,0,5          ;Jeder Schuss um 5 Einheiten nach vorne verschieben
Next


;;;;maussteuerung
TurnEntity camparent,0,EntityYaw(cam)-MouseXSpeed(),0
RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),0,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

RenderWorld()

;;;;collision
If EntityCollided(camparent,2) Then
TranslateEntity camparent,0,0,0
Else TranslateEntity camparent,0,-1,0
EndIf

UpdateWorld()

Text 300,0,"Drücke 1-9 um Waffen zuwechseln!"
Text 200,20,"Schießen mit der linken Maustaste und Nachladen mit R !"
Text 20,30,magazin
If magazin=0 Then Text 350,300,"Drücke R um Nachzuladen!"



DrawImage cursor,GraphicsWidth()/2,GraphicsHeight()/2

Flip
Wend
ClearWorld()
End

Midimaster

BeitragSa, Jan 09, 2010 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
hä?

ich galub, ich hab das vor 3 tagen schon mal gelese, warst das auch du?

Beschreib doch mal erst genau was du von dem schuss erwartest! Wo soll er entstehen, in welche Richtung soll der starten wohin soll er fliegen, wenn das Pivot sich dreht. Soll irgendwas anders sein, wenn die Camera sich dreht? Ist der Schuss eine Art Rakete oder eine Kugel?


problem ist jetzt der schuss er soll am pivot sein,das geht ja
also ist die entstehung perfekt?

...aber wenn ich mich jetzt drehe
wen? Camera oder Pivot?

...bleibt der schuss nicht ander stelle sondern dreht sich mit dem pivot
fliegt der da schon? liegt es vielleicht an der zulang gedrücktn Mouse()?

... aber der schuss zeigt zur kamera
wie? ein schuss kann doch nicht "zeigen"? Fliegt der dahin, oder ist nur das Objekt im Bild nicht richtig orientiert?

...und dadurch ist er an eineer anderen stelle
ist er? Stelle? Dann steht er also? oder fliegt er? Dann meinst Du Richtung!

weiß nicht wie ichs hinbekomme
was hinbekomme? was soll er denn tun?


Bitte feglerbescheibung immer etwas genauer:

1. Das will ich

2. Das beobachte ich

3. Das hab ich auch schon probiert

4. Dann die Frage
 

masterman123

BeitragSa, Jan 09, 2010 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das war ich

er soll vom pivot in die mitte vom bildschirm,er soll immer gerade weg von der kamera fliegen,wenn die camera sich bewegt dann soll der schuss hoch und runter gehen(das klappt ja),es ist eine kugel

...aber wenn ich mich jetzt drehe
wen? Camera oder Pivot?
der pivot(links,rechts)

...bleibt der schuss nicht ander stelle sondern dreht sich mit dem pivot
fliegt der da schon? liegt es vielleicht an der zulang gedrücktn Mouse()?
er fliegt da schon,das probier ich mal aus,also dann seh ich den schuss nicht mehr,nur mit mousedown seh ich ihn

... aber der schuss zeigt zur kamera
wie? ein schuss kann doch nicht "zeigen"? Fliegt der dahin, oder ist nur das Objekt im Bild nicht richtig orientiert?
naja er geht von der kamera weg,sorry

...und dadurch ist er an eineer anderen stelle
ist er? Stelle? Dann steht er also? oder fliegt er? Dann meinst Du Richtung!
er fliegt,eine andere stelle wo er entsteht

weiß nicht wie ichs hinbekomme
was hinbekomme? was soll er denn tun?
er soll sich mit dem pivot drehen also das er immmer an der gleichen stelle erstell wird,aber es ist so wnn ich den pivot drehe dann ändert sich die entstehungs stelle,was garnet sein kann weil sich die kamera mit dreht

das ist das problem

BladeRunner

Moderator

BeitragSa, Jan 09, 2010 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Dürfte ich Dich dann bitten nicht zum ein- und selben Thema mehrere Threads zu eröffnen?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

masterman123

BeitragSa, Jan 09, 2010 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ja sorry,aber keiner hat die seite mehr angeklickt

BladeRunner

Moderator

BeitragSa, Jan 09, 2010 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Das bedeutet in der Regel das dir keiner mehr helfen kann oder will.
Was Du da betreibst nennt sich Threadpushing und ist hier nicht gestattet, also lass es bitte bleiben, ok?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

masterman123

BeitragSa, Jan 09, 2010 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ok Embarassed

BladeRunner

Moderator

BeitragSa, Jan 09, 2010 15:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Kein Grund rot zu werden Wink Merks Dir einfach für die Zukunft.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Midimaster

BeitragSa, Jan 09, 2010 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
also,

vebessere mich, wenn ich das nicht richtig verstanden habe:

Da ist ein Pivot, der fährt in der Lanschaft rum und kann links/rechts drehen. Da ist eine Kamera drauf, die nur nach oben/unten gedreht werden kann. Wenn der Pivot dreht, dreht es auch die Kamera mit.

Nun sieht die Camera einen Gegner und du feuerst einen Schuss ab. Der Schuss fliegt von der Camera weg und in Richtung Gegner. Nun soll aber der Schuss nicht einfach auf das Ziel laufen und fertig, sondern es soll so sein, dass die Camera diesen bereits abgefeuerten Schuss noch beeinflussen kann?

Du willst den Schuss noch fernlenken? Nur Richtung rauf/runter? Oder auch links/rechts?

Wenn der Pivot um 3° nach links schwenkt soll dieser Schuss auch 3° nach links, wenn die Kamera 4° rauf geht soll der Schuss auch 4° rauf?

Oder so: Die Kamera hat ja immer eine Art Ziel im Visier. Irgendeinen fernen Punkt auf den sie gerade genau in der Mitte des Bildschirms fliegt. Soll der Schuss vielleicht dahin?


So, nun bestätige mir das erst mal oder korrigier es. Bei so einer genauen Beschreibung werden auch die anderen hier wieder helfen. Wirst sehen....
 

masterman123

BeitragSa, Jan 09, 2010 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun sieht die Camera einen Gegner und du feuerst einen Schuss ab. Der Schuss fliegt von der Camera weg und in Richtung Gegner. Nun soll aber der Schuss nicht einfach auf das Ziel laufen und fertig, sondern es soll so sein, dass die Camera diesen bereits abgefeuerten Schuss noch beeinflussen kann?

Du willst den Schuss noch fernlenken? Nur Richtung rauf/runter? Oder auch links/rechts?

ne will nur schiessen hab nen fadenkreuz keine lenkrakete


Wenn der Pivot um 3° nach links schwenkt soll dieser Schuss auch 3° nach links, wenn die Kamera 4° rauf geht soll der Schuss auch 4° rauf?

ja aber der entstehungspunkt,so das er dorthin fliegt und ich weg gehen kann ohne das er gelenkt wird


Oder so: Die Kamera hat ja immer eine Art Ziel im Visier. Irgendeinen fernen Punkt auf den sie gerade genau in der Mitte des Bildschirms fliegt. Soll der Schuss vielleicht dahin?

ja er soll da hin fliegen wo der fadenkreuz hinzeigt also mitte des bildschirms

Midimaster

BeitragSa, Jan 09, 2010 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
so, wie dein code aussieht, müsste eigentlich genau das passieren, was du willst.

ich glaub ich bau das mal kurz nach....
 

masterman123

BeitragSa, Jan 09, 2010 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ok

Midimaster

BeitragSa, Jan 09, 2010 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
also, ich hab hier mal was eigenes gebastelt du bewegst den ego mit den Pfeiltasten


für mich sieht das so aus, als ob alles richtig wäre. teste u mal, ob es das ist , was auch du sehen möchtest!

BlitzBasic: [AUSKLAPPEN]
Graphics3D 800,600
erde=CreatePlane()

Tex=CreateTexture(32,32)
SetBuffer TextureBuffer(tex)
ScaleTexture Tex,4,4
EntityTexture Erde,tex

Color 0,111,0
Rect 0,0,32,32
Color 0,0,111
Rect 0,0,1,32
Color 111,0,0
Rect 0,0,32,1
SetBuffer BackBuffer()

cube=CreatePivot()
PositionEntity cube, 0,4,0
cam=CreateCamera(Cube)

Type SchussTyp
Field Ent%
End Type
; Schuss=CreateCube()
; ScaleEntity Schuss,0.1,0.1,0.1

Repeat
If MouseHit(1) Then
Print "Maus"
Schuss.SchussTyp = New SchussTyp
Schuss\Ent=CreateCube(cam)

MoveEntity Schuss\Ent, 0,0, 3
; RotateEntity Schuss\Ent, EntityPitch(cam,1),EntityYaw(cam,1), 0
ScaleEntity Schuss\Ent,0.3,0.3,0.3
EndIf
For s.SchussTyp = Each SchussTyp
EntityParent Schuss\Ent,0
MoveEntity s\Ent,0,0,0.03
Next
If KeyHit(200) Then
TurnEntity cam,-1,0,0
ElseIf KeyHit(208) Then
TurnEntity cam,1,0,0
EndIf
If KeyHit(203) Then
TurnEntity cube,0,1,0
ElseIf KeyHit(205) Then
TurnEntity cube,0,-1,0
EndIf

RenderWorld
Flip 1
Until KeyHit(1)




das ist aber genau der gleiche Code, den du auch geschrieben hast...seltsam.....
  • Zuletzt bearbeitet von Midimaster am Sa, Jan 09, 2010 18:24, insgesamt 3-mal bearbeitet
 

masterman123

BeitragSa, Jan 09, 2010 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
es liegt ander mousesteuerung,das drehen (links,rechts)
der entstehungspunkt vom schuss ist an derr waffe ausgerichtet wenn ich jetzt 180 grad drehe geht der entstehungspunkt nach links,bei 360 grad ist er wieder bei der waffe

Midimaster

BeitragSa, Jan 09, 2010 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn die waffe Child von Cam werden soll, das würde ich das sehr früh tun:

Zitat:
;;;;;waffe
waffe=LoadMesh("w_fiveseven.3ds")
PositionEntity waffe,3.5,107,5
RotateEntity waffe,105,0,270
EntityParent waffe,cam
ScaleMesh waffe,0.2,0.2,0.2



stell im Code das EntityParent... gleich in das LoadMesh:

waffe=LoadMesh("w_fiveseven.3ds",cam)

und dann erst die anderne Aktionen Position, Rotate ,etc.. für die du jetzt nochmal neue werte herausfinden musst


und wenn die schüsse doch aus waffe rauskommen sollen, warum nimmst du dann nicht gleich die EntityX(),... etc von waffe?


außerdem könnte man die EntityYaw auch von Cam oder Waffe nehmen, dann mit Parameter 1:

RotateEntity Schuss\Ent, EntityPitch(cam,1),EntityYaw(cam,1), 0


[EDIT]

ich hab den Code oben gerade nochmal überarbeitet und neu reingestellt. Lad ihn bitte mal in B3D. Wie zufrieden bis du da mit der Schussrichtung? Nur mal so als Diskussionsgrundlage. Ist es das was du suchst?
 

masterman123

BeitragSa, Jan 09, 2010 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ok bin schon dabei

edit ja das ist gut nur mit der maus dann wärs perfect,aber nur nach links nach rechts ist der schuss links und nicht mehr rechts und das ist auch mein problem

Midimaster

BeitragSa, Jan 09, 2010 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
ohhhh!!!!

jetzt hab ich endlich verstanden, was dir nicht gefällt!!! Very Happy


das sieht nur so aus, als ob der schuss rechts im bild erscheint! in wirklichkeit erscheint er genau mittig. probier mal zu schiessen, ohne vorher zu drehen. stimmtst du zu?

wenn du nun nach links drehst, scheint der schuss rechts ins bild zu kommen. wenn du nach rechts drehst, scheint er links ins Bild zu kommen. In Wirklichkeit kommt er immer immer der mitte (bei der mittellinie in meinem testterrain zu sehen) heraus.

du willst also, das der schuss rechts neben der camera entsteht?


Ok, here are the results of the swedish jury:

die Entstehung geht so:

BlitzBasic: [AUSKLAPPEN]
   Schuss.SchussTyp = New SchussTyp
Schuss\Ent=CreateCube(cam)
MoveEntity Schuss\Ent, 0,0, 3

Schuss wird gleich beim Createn Child von Cam, dann wird schon mal Pos und Richtung richtig gemacht, außerdem wirds um 3 nach vorne (Z) verschoben, damit der schuss gleich vor der camera zu sehen ist.


BlitzBasic: [AUSKLAPPEN]
   For s.SchussTyp = Each SchussTyp
EntityParent Schuss\Ent,0
MoveEntity s\Ent,0,0,0.03
Next

Beim Bewegen wird die Child/Parent-Beziehung wieder aufgegeben. Ab jetzt fliegt der Schuss alleine in die letzte "gemeinsame" Richtung.

Da ist jetzt noch keine Waffe drin, aber der Schuss-Start ist immer bei der Kamera. Ich korrigere meinen Beispielcode oben nochmal. Schaus dir bitte mal an.
 

masterman123

BeitragSa, Jan 09, 2010 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
es ist gut
aber wie ist dennn der type
ich hab ihn

Code: [AUSKLAPPEN]
Type SchussTyp
Field Ent%
End Type

Midimaster

BeitragSa, Jan 09, 2010 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Resume


Ein wenig ärgert es mich schon, dass du meinen Ratschlag von vor 3 oder 6 Tagen gar nicht beachtet hast. Da hatte ich nämlich als Vorschlag die Lösung, die sich jetzt nach langem Hinundher abzeichnet, schon gepostet.

Nachdem du dich darauf nicht gemeldet hast und heute erneut das Problem reinstellst, bin ich davon ausgegangen, dass mein Vorschlag von damals nicht funktionier hätte.

Wichtig vielleicht auch für andere Hilfesuchende:

Die Helfer machen sich oft richtig Mühe, euch zu schreiben. Da wäre es schon anständig, jede Post zu beantworten. Entweder mit "das ging nicht" oder " das hab ich nicht verstanden"


Wichtig auch für alle 3D-Neulinge:

Das Parent/Child-Verhältnis sollte viel öfter im eigenen Spiel durchdacht werden. Versucht nicht einen Schuss irgendwie neben den Player zu positionieren, wenn es eine Waffe gibt.

Ein Schuss ist bei Geburt ein Child einer Waffe (wie im wirklichen Leben). Einen Moment läuft er noch mit der Waffe und dann löst er die Child/Parent-Beziehung und geht seinen Weg alleine weiter. Wer dies im Spiel so realisiert, hat ganz wenig Ärger mit Koordinaten.

BladeRunner

Moderator

BeitragSa, Jan 09, 2010 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Na, wer wird denn so schreien Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group