MausBEWEGUNG abfragen und camera drehen...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ReLeNtLeSS

Betreff: MausBEWEGUNG abfragen und camera drehen...

BeitragMi, Sep 12, 2007 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
hey,

ich versuche mich in letzter zeit eine go perspektive wie bei cs hinzukriegen. habe die sufu benutzt hab aber nix passendes gefunden.

habe vollgendes probiert:

Code: [AUSKLAPPEN]
SpeedX=SpeedX*.9+MouseXSpeed()
SpeedY=SpeedY*.9+MouseYSpeed()

If SpeedX=1 And SpeedY=1
 RotateEntity camera,360,360,360
EndIf


UND:
Code: [AUSKLAPPEN]
If MouseXSpeed()=True And MouseYSpeed()=True
 RotateEntity camera,360,360,360
EndIf



allerdings geht das nich. habe mir gedacht, ich muss irgendwie dem programm klarmachen, das die maus bewegt wird, und das er dann die camera in die richtung der mausbewegung dreht. allerdings scheitere ich an der abfrage..
 

Matthias

BeitragMi, Sep 12, 2007 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch es mal so. Vieleicht gehts

Code: [AUSKLAPPEN]

if MouseDown(1) then
turnEntity Cam,(MausAltX-MouseX()),0,0
end if

MausAltX=MouseX()

oder so:
Code: [AUSKLAPPEN]

if MouseDown(1) then
turnEntity Cam,(MausAltX-MouseX()),0,0
else
MausAltX=MouseX()
end if

Mfg Matthias[/code]

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Sep 12, 2007 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab hier grad mal was gemacht:

Code: [AUSKLAPPEN]
Graphics3D 800,600,0,2
SetBuffer BackBuffer()

camera=CreateCamera()

For q=1 To 100
   PositionEntity CreateCube(),Rand(-100,100),Rand(-100,100),Rand(-100,100)   
   PositionEntity CreateCube(),Rand(-100,100),0,Rand(-100,100)   
Next


While Not KeyHit(1)
   
   SpeedX=SpeedX-MouseXSpeed()
   SpeedY=SpeedY+MouseYSpeed()
   MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
   If SpeedY>+90 Then SpeedY=+90
   If SpeedY<-90 Then SpeedY=-90
   
   If MouseDown(2) Then MoveEntity camera,0,0,1
   RotateEntity camera,SpeedY,SpeedX,0
   
   RenderWorld
   Flip
   
Wend
End


Es ist bisher noch ohne ''smooth'', was keine sehr präzise Steuerung erlaubt.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ReLeNtLeSS

BeitragMi, Sep 12, 2007 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
danke an euch beide!

@matthias dein beispiel funktioniert leider nicht!

@hectic

danke fein^^ das funktioniert... alles habe ich nun das problem das die cam vom boden abhebt (noclip), was ich natürlich ändern will...

geht das wenn ich ein unsichtbares terrain drüberlege? oder sollte ich besser was anderes versuchen?

danke nochmal^^

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Sep 12, 2007 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist ein Beispiel welches zeigt wie man die Kamera drehen kann, von Kollision bzw. Physik war erstal nicht die Rede Very Happy Wie für vieles gibt es auch hier mehrere Lösungen:

- Benutze ql:TranslateEntity und mache den Rest über Kollisionsabfrage bzw. Physik.

- Falls im Game dein Spieler jeweils ein Torso und ein Kopf hat, so bewege dein Spieler in Richtung der Ausrichtug des Torsos und nicht des Kopfes.

- Du kannst das ganze auch mit ql:TFormNormal ausrechnen und entsprechend auswerten.

edit1: Um das Problem erstmal aus der Welt zu schaffen, kannst du zunächst ein Workaround machen und folgende Zeil eintragen.

Code: [AUSKLAPPEN]
   TranslateEntity camera,0,-EntityY(camera),0
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ReLeNtLeSS

BeitragMi, Sep 12, 2007 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
alles klar danke^^

eine frage nur noch:

wie komme ich eigentlich dazu, wände, stile, berge, schrägen im allgemeinen zu machen? muss ich immer nen würfel scalen?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Sep 12, 2007 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Für Gegenstände etc. musst du Modelle erstellen und diese in deine 3D-Welt laden. Dazu gibt es zB Befehle wie ql:LoadMesh. Modelle kannst du dir freie im Internet laden, die aber ''alle'' sammt schlecht sind, oder du erstellst dir selber welche. Das einfachst zu bediehnende Programm zur Erstellung ist Wings3D, zu finden unter www.wings3d.com

Hoffe das ich dich richtig verstanden habe...

edit1: Als ich Wing3D das erste mal ausprobiert habe, hatte ich zuvor noch nie mit 3D-Programmen zu tun gehabt. Nach 4 Stunden habe ich bereits mein ertsen Panzer erstellen können.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ReLeNtLeSS

BeitragMi, Sep 12, 2007 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
alles klar, genau das meinte ich. danke!

doch habe ich immernoch ein problem:

dein code oben (translateentity) funktioniert, allerdings stecke ich im terrain drin. und wenn ich das änder, (0=1) dann färht die cam automatisch...

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Sep 12, 2007 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Da du schon ein Terrain hast, würde ich doch lieber das wie folgt machen. Anstelle von TranslateEntity dann nach MoveEntity camera folgendes eintragen:

Code: [AUSKLAPPEN]
   x#=EntityX(camera)
   z#=EntityZ(camera)
   PositionEntity camera,x,TerrainY(terrain,x,0,z)+2,z


Auch hier handelt es sich eher um ein Workaround, da ich dein kompletten Code nicht kenne und daher auch somit nicht die beste Lösung zu finden kann.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group