Zylinder am Ende Positionieren

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Megamag

Betreff: Zylinder am Ende Positionieren

BeitragMo, Jun 16, 2008 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.
Ich habe ein Raumschiff, welches sich um die eigene Achse dreht.
An den Kanonen habe ich Pivots. Ich möchte einen Laserstrahl machen,
und habe dafür einen seehr langen Zylinder genommen. Jenen will
ich aber so positionieren, dass das eine Ende des Lasers am Pivot ist,
also dass er aus der Kanone kommt und nicht mit seinem Mittelpunkt
in der Kanone hängt. Dann will ich auch noch, dass der Laser sich um
den "Kanonenpivot" dreht, wenn man ihn dreht. Das Problem ist nun,
wie ich den Laser genau mit dem Ende an der Kanone platzieren kann.

Eingeproggt

BeitragMo, Jun 16, 2008 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
PositionEntity EntityX(pivot),EntityY(pivot),EntityZ(pivot)+MeshDepth(laser_mesh)/2


So ungefähr?
Ich hab ehrlich gesagt kA, ob es richtig ist, aber wär mal mein erster Gedanke dazu.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Megamag

BeitragMo, Jun 16, 2008 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm, ja...
Ich habe unvollständig erklärt.
Es ist so, der Shooter ist von der Seite,
d.h. der Laser ist um -45° "gerollt" worden.
Ich glaube, da geht dann der Code nicht, oder?

Ich hab's gerade mal ausprobiert.
Ja, es geht nicht...

Hier nochmal der Code:

Code: [AUSKLAPPEN]
Piv1 = CreatePivot()
PositionEntity Piv1,15,0,20


Code: [AUSKLAPPEN]
Canpiv7 = CreateSphere()
EntityColor Canpiv7,0,255,255
PositionEntity Canpiv7,21,-3.5,20
EntityParent Canpiv7,Piv1
Canpiv8 = CreateSphere()
EntityColor Canpiv8,0,255,255
PositionEntity Canpiv8,20,7.5,20
EntityParent Canpiv8,Piv1

Laser1 = CreateCylinder(32)
ScaleEntity Laser1,1,20,1
EntityColor Laser1,0,255,255
EntityAlpha Laser1,0.5
TurnEntity Laser1,0,0,-45
PositionEntity Laser1,EntityX(Canpiv7),EntityY(Canpiv7),EntityZ(Canpiv7)-MeshDepth(Laser1)/2
EntityParent Laser1,Canpiv7

Eingeproggt

BeitragMo, Jun 16, 2008 23:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenn ich jetzt ehrlich gesagt total aussteige was deinen Code angeht oder überhaupt das Problem (Is halt schon spät bzw. bin ich in 3D ned so der Ober-checker), sag ich dir noch was mir auffällt:
MeshDepth braucht ein Mesh, kein Entity. Und CreateCylinder gibt aber ein Entity zurück was ich weiß. Von daher kann das nicht gehen.
EDIT: Iwie is meine Formulierung Müll Sad Aber ich habs grad getestet und das was ich sagen will stimmt:
Die Mesh...-Befehle (MeshWidth, MeshHeight, MeshDepth) werden nicht durch ScaleEntity beeinflusst. In meinem Versuch bleiben Sie immer 2.0, egal wieviel man skaliert. Weil eben das Entity skaliert wird.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Megamag

BeitragDi, Jun 17, 2008 8:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, aber das muss doch irgendwie auch mir einem
CreateCylinder-Zylinder gehen.

Okay, ich hab's gelöst.
Ich habe das einfach manuell gemacht.
War zwar umständlich aber hat funktioniert.

Tankbuster

BeitragDi, Jun 17, 2008 13:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Mom... das hab ich auch in meinem alten Onlinegame gemacht.
Wenn du einen Cylinder um 200 skalierst, musst du ihn auf der Achse um 100 mit MoveEntity verschieben. Dann ist das eine Ende des Zylinders immer genau auf der Stelle, wo du ihn haben willst Wink

Also:

Weg, der verschoben werden muss=Scale/2 ^^
Twitter
Download Jewel Snake!
Windows|Android

Megamag

BeitragDi, Jun 17, 2008 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das habe ich auch rausgefunden^^

Danke.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group