Probleme mit der Rotation - mehrere Brushes

defender1980
Hallo zusammen,
ich möchte in ein Script-Brushmodel kippen lassen.....

Hört sich einfach an, is es aber leider nicht! Denn folgende Probleme sind aufgetaucht:

Da ich das Objekt des öfteren in der Map einbauen will hab ich es als prefab abgespeichert, es soll ja auch in der späteren Verwendung gedreht werden können, um es den Mapbereichen in der Ausrichtung anpassen zu können.

Prefabs haben aber keine wasweisich.gsc.
Das Script für die Kippung muss ich also in der map.gsc aufrufen.
Beim Aufruf des Scripts in der Map.gsc bezeihen sich die Werte für die Rotation aber wieder auf die Koordinaten der Map.
Je nach Ausrichtung (X, Y) würde rotatepitch oder rotateroll zutreffen.

Gibt´s ne Möglichkeit ein Objekt um eine Achse in die Richtung auf einen script_orgin rotieren zu lassen? Wie müsste man sich sowas dann Vorstellen? rotateto wäre ja laut Doku vorhanden nur leider ist die Erläuterung ziemlich mau....
steinacker
wenn du ein selbstgebautes prefab nehmen willst, könnte es schonmal zu dem problem führen, dass der targetname immer der gleiche ist, wenn das teil über den targetname im script angesprochen wird
da kommt dann ne fehlermeldung ...is used by more than one entities - so in der art
was du damit meinst:
Gibt´s ne Möglichkeit ein Objekt um eine Achse in die Richtung...
versteh ich nich ganz

ich hab z.b. in der mp_voyager4 die 6 ringe, die sich um die eigene achse drehen, dafür hab ich einfach das script von dem ventilator genommen und etwas erweitert (6 fans)

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
main()
{
	fan1 = getEnt( "ring1" , "targetname" );
	fan2 = getEnt( "ring2" , "targetname" );
	fan3 = getEnt( "ring3" , "targetname" );
	fan4 = getEnt( "ring4" , "targetname" );
	fan5 = getEnt( "ring5" , "targetname" );
	fan6 = getEnt( "ring6" , "targetname" );

	while (1)
	{
		fan1 rotateRoll( 360, 5, 0, 0 );
		fan2 rotateyaw( 360, 5, 0, 0 );
		fan3 rotatePitch( 360, 5, 0, 0 );
		fan4 rotateRoll( 360, 5, 0, 0 );	//y-axis
		fan5 rotateyaw( 360, 5, 0, 0 );		//z-axis
		fan6 rotatePitch( 360, 5, 0, 0 );	//x-axis

		wait 4.9; 
	}
}



oder nimm doch einfach das door-script in der grundversion und setz dann dafür den entsprechenden rotate befehl ein, je nach achse
defender1980
wäre ne Möglichkeit, nur soll die Rotation nicht um eine der x,y oder z Achsen geschehen, was bei einer einfachen Drehbewegung wie dem Ventilator der Fall ist.
Sonst könnte man das Prefab nicht ausserhalb der rechten Winkel positionieren und alle eingefügten Prefabs müssten die gleiche Ausrichtung haben.
Die Rotation oder besser gesagt die Kippung Brushes soll in eine frei definierte Richtung zu anderen Brushes geschehen.
Es würde laut Script Dokumentation einen rotateto geben, meinem Verständis nach das Pondon zum moveto. Nur leider werd ich aus dem Aufgeführten Beispiel nicht so recht schlau.

Eine Mehrfachbelegung stellt eigentlich kein Problem dar, da es keinen Auslöser für die einzelnen Objektbewegungen gibt. Sind in einer Endlosschleife. Nur die Richtung ist eben der Knackpunkt.
defender1980
Ich werd die Brushmodels aus den Prefabs einfacht reinkopieren und die entsprechenden script_brushmodels fortalufend per scrit ansprechen.
Die Ausrichtung muss eben Stück für Stück angeglichen werden.
Nightwing

Zitat:

Original von defender1980
Es würde laut Script Dokumentation einen rotateto geben, meinem Verständis nach das Pondon zum moveto. Nur leider werd ich aus dem Aufgeführten Beispiel nicht so recht schlau.


rotateto((Zielwinkel in X, Zielwinkel in Y, Zielwinkel in Z), Bewegung in sec, Beschleuniggungszeit in sec, Abbremszeit in sec);

Beispiel: rotateto((-90,90,5),0.5,0.3,0);

ToM
defender1980
Doch diese werte beziehen sich so wie es scheint wieder auf die räumliche Ausrichtung des Objektes in der Map.
Einzige Möglichkeit die Abzufangen wäre ne Fallunterscheidung im Script auf der Grundlage der Ausrichtung.
Die Ausrichtung des Prefabs könnte man aus den Entityeinträgen oder genauer aus dem Key angle auslesen.
Nun kommt es nur noch auf den Datentyp an, da im Key angles alle 3 Ausrichtungsebenen berücksichtigt werden.
OLD MAN WITH GUN
x = entity.angles[0]
y = entity.angles[1]
z = entity.angles[2]
defender1980
@Nightwing
Danke für die Erklärung, damit macht das Beispiel auch einen Sinn!

@OldMan
Danke für den Hinweis, werd es gleich mal testen.

Fraglich bleibt lediglich ob ne Mehrfachverwendung möglich ist.
defender1980
OK - Eine Mehrfachverwendung ist nicht möglich.

Wäre auch ein Wunder gewesen - wie sollen den Objekte mit Mehrfachverwendung unterschieden und angesprochen werden.

Bleibt nur noch eins:
Die Script_brushmodels fortlaufend zu nummerieren und über eine For-Schleife die Befehlsabarbeitung durchführen zu lassen.
Somit is aber mein Prefab für die Katz, die Script_brushmodels müssen ja für die Nummernvergabe editierbar bleiben.

Mal sehen wie ich das hinbringe....
OLD MAN WITH GUN

Zitat:

Original von defender1980
OK - Eine Mehrfachverwendung ist nicht möglich.
Wenn man genau wüsste, was du wie vor hast, und unter welchen Umständen sie gedreht werden sollen (z.B durch separate trigger) wäre das schon möglich.
defender1980
Hab vor eine Art Serienfertigung aufzubauen in der sich eine Vielzahl von Objekten gleichen Typs, in gleicher Art bewegen.

Keine Bewegungsauslöser sondern ständige Bewegung.

Ein Prefab der Geräte hab ich bereits erstellt, sowie die sich bewegenden Komponenten als Script_Brushmodels vorliegen.

2 Möglichkeiten zur Realisierung im Script:

1. Alle Objekte einzeln ansprechen

oder

2. Per Schleife und Fallunterscheidung die Bewegungsrichtungen vom Script bestimmen lassen.
Panther[GER]
Hört sich irgendwie fast genauso an wie das "Rolltreppen" Problem ..... hab jetzt leider auf die schnelle den thread nich gefunden....

Edit:
Rolltreppe
grosses Grinsen
defender1980
Im Prinzip is es fast das selbe mit einem kleinen Unterschied
Bei der Rolltreppe sind die Stufen einfache Brushes, die bewegt werden.
Bei mir ist der Teil der sich im Winkel bewegen soll aus mehreren Brushes zusammengesetzt.

Ein Prefab kann man leider nicht zu einem Script_brushmodel wandeln, was zur folge hat, daß ich entweder den Inhalt meines Prefab die 30 mal reinkopieren und die beweglichen Teile als Script_brushmodel einzeln benennen muss.

Oder

Mein Prefab 30 mal mit unterschiedlichen Namen speichere (Scriptbrushes inklusive umbennen) um alle ansprechen zu können.

Hier noch ein Bild des zu kippenden Objekt-Prefab (Models).
steinacker

Zitat:

Ein Prefab kann man leider nicht zu einem Script_brushmodel wandeln ...

du kannst aber die hier selektierten teile allesamt als script brushmodel definieren
einfach markiert lassen und dann script-->brushmodel wählen
wenn du dann einen targetnamen vergibst, oder das teil mit einem trigger o.ä. verbindest, dann nur einen brush selektieren
der radiant trägt das dann automatisch nach bei den anderen
defender1980
Is bereits passiert, nur wird dieses script_brushmodel auf der Map insgesamt 45 Mal verwendet!

Da ergibt sich leider das Problem mit der Mehrfachverwendung einer Varialblen im Script.

Und da dies nur der Script_brushmodelanteil des Prefabs ist, kann man leider nicht in der Map einfach selektieren.

Die Selektion bezieht sich dann auf das Prefab.

Ich kopier die Dinger einfach einzeln rein und benenn die Models entsprechend. Dann klappt es schon....
defender1980
Hi,
so, hab alles zusammen:
Script, für die Bewegung
Script_brushmodels mit unterschiedlicher Bezeichnung in 40 facher Ausführung
Und eine vorbereitete bereits Lauffähige Map

Und jetzt DAS:

Ausnahmebehandlung, Verletzung bei der Speicherzuweisung on Demand-Debug und schließlich Abbruch des Compiling Tools.

Unabhängig vom Rechner!!

Immer an der selben Stelle! Bei der Bildung der Lightmap Groups....

und es liegt definitiv nur an den Script_brushmodels.... ???

Der Abbruch erfolg bereits bei Schritt 1. Compile BSP somit noch keine Scripte sondern nur die MAP und unabhängig von der Menge!
Keine Überschneidungen oder mehrfachselektionen.

Ich glaub ich lass es einfach..... - oder hat noch jemand eine Idee??
steinacker
mal nich so schnell aufgeben hier grosses Grinsen

da der fehler beim erstellen der lightmap kommt, könntest du mal versuchen, auf die lightmap ansicht umzustellen und dir die lightmaps von den brushes dieser betroffenen models anschauen
und mit dem surface inspector mit Lmap z.b. anpassen

Edit:
könntest du mal dein script hier pousten, das würde mich mal interessieren Freude
defender1980
Dumme Frage:
Wie komm ich zu dieser Ansicht?
bangingbernie
Shift+L: 3D-Ansicht auf Lightmap-Anzeige
2x Shift+L: 3D-Ansicht wieder auf Textur-Anzeige
defender1980
Danke für den hinweis