Laufen auf Kugel

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

pixelshooter

Betreff: Laufen auf Kugel

BeitragSo, Nov 12, 2006 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte, das der Player auf der Kugel läuft. Mein Problem ist nun, das ich irgendwie die negative y-Achse auf das Zentrum der Kugel ausrichten möchte.
Wie mache ich da? Mein nicht funktionierendes Prog:
Code: [AUSKLAPPEN]
Graphics3D 800,600
welt = LoadMesh("welt.b3d")
DebugLog MeshDepth(welt)
ScaleMesh welt,10,10,10
DebugLog MeshDepth(welt)
player = CreatePivot()
camera = CreateCamera(player)

sun = CreateLight(2)
PositionEntity sun, 2000,2000,-4000
CameraRange camera,0.1,5000
PositionEntity player,0,0,-MeshDepth(welt) / 2 -100
Repeat
   If KeyDown (200) Then MoveEntity player,0,0,1
   If KeyDown (208) Then MoveEntity player,0,0,-1
   UpdateWorld
   RenderWorld
   Flip
Until KeyHit (1)
End
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc

Mr.Keks

BeitragSo, Nov 12, 2006 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
nutze ql:aligntovector für die y-achse und dann turnentity um 180° um z oder x.... so kannst du die y-achse permanent auf das zentrum ausrichten.

aber es gäbe noch ein paar andere, nettere dinge. also, mein persönlicher favorit wäre, immer ql:linepick in richtung des zentrums zu machen, den player zum zentrum fallen zu lassen, wenn das linepick auf nichts trifft, und sonst immerden player mit aligntovector an den normalen der getroffenen kugeloberfläche auszurichten (ql:pickednx()yz)
MrKeks.net

pixelshooter

BeitragMo, Nov 13, 2006 12:53
Antworten mit Zitat
Benutzer-Profile anzeigen
aber AligntoVector benutzt relative Koordinaten
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Dreamora

BeitragMo, Nov 13, 2006 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wo ist da das Problem?

PickedNY (wenn du wie oben empfohlen gepickt hast) wird immer die Richtung der Kugeloberfläche "unter" dir angeben, also die Richtung, welche für dein Objekt auf der Kugel die "Y Richtung" definiert, sprich die Richtung in welche die Y Achse deines Objektes ausgerichtet werden muss.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

pixelshooter

BeitragMo, Nov 13, 2006 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ah, VIELEN DANK!

aber: Das Licht bewgt sich nicht mit dem player mit!!
Code: [AUSKLAPPEN]
Graphics3D 800,600
welt = LoadMesh("welt.b3d")
ScaleMesh welt,10,10,10
player = CreatePivot()

camera = CreateCamera(player)
TurnEntity camera,0,0,180
light = CreateLight(player)
;PositionEntity light, 2000,2000,-4000
CameraRange camera,0.1,5000
PositionEntity player,0,0,-MeshDepth(welt) / 2 -100

Repeat
   DebugLog "light  " + EntityX(light,0) + "/" + EntityY(light,0) + "/" + EntityZ(light,0) + "/"
   DebugLog "player " + EntityX(player) + "/" + EntityY(player) + "/" + EntityZ(player) + "/"
   AlignToVector player,EntityX(welt) - EntityX(player),EntityY(welt) - EntityY(player),EntityZ(welt) - EntityZ(player),2
   If KeyDown (200) Then MoveEntity player,0,0,10
   If KeyDown (208) Then MoveEntity player,0,0,-10
   If KeyDown(203) Then MoveEntity player,10,0,0
   UpdateWorld
   RenderWorld
   Flip
Until KeyHit (1)
End
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc

FreetimeCoder

BeitragMo, Nov 13, 2006 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
CreateLight([Type],[Parent]) Rolling Eyes

Du hast als Typ den Player angegeben, das kann nicht funktionieren.
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

pixelshooter

BeitragMo, Nov 13, 2006 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Embarassed so was dummes... Kann jedem mal passieren.
So, jetzt kommt die Lampe mit, aber der Debuglog merkt davon nix!?
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc

FreetimeCoder

BeitragMo, Nov 13, 2006 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil du EntityX(Light,0), also für das relative X zum Parent nimmst.
Nimm besser EntityX(Light,1), damit die globale Position angezeigt wird.
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

pixelshooter

BeitragDi, Nov 14, 2006 8:00
Antworten mit Zitat
Benutzer-Profile anzeigen
??? Laut onlinehilfe ist der Parameter 0 global. aber danke
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc

FreetimeCoder

BeitragDi, Nov 14, 2006 9:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Shocked Stimmt! Hab ich noch garnicht bemerkt!
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group