Starting with Newton

Posted By: zydar

Starting with Newton - 04/03/07 13:03

Hi @ all
ich habe newton installiert und weiß nicht was ich jetzt machen soll...
Posted By: RedPhoenix

Re: Starting with Newton - 04/03/07 18:34

Schwierig... Das Problem mit Newton ist, dass man nicht sehen kann, wie genau die dllfunctionen arbeiten (es sei denn man kann c++ und kriegt die dlls auf).
Schau dir erstmal die Tutoriallevels an, da kriegt man einen ganz guten Einblick in das Prinzip von Newton. Das Grundprinzip ist auch gar nicht so schwierig:

---Erstmal newton.dll und newton_script2.wdl und newton.wdl ins Spielverzeichnis kopieren und die wdls includen (im Hauptscript). (P.s. bei neueren Versionen muss die dll ins acknex_plugins verzeichnis).
Außerdem muss zu den levelstring definitionen:
string newtonLevel_cls = <levelname.CLS>;
Und an den Anfang der Mainfunction:
wait(1); dll_handle = newtonHandle; temp = NewtonAddMap (level_str, splashscreen);

Wobei das dll_handle nur gebraucht wird, wenn mehrere dlls geöffnet sind (nicht vergessen dass dann das newtonhandle auch existieren muss, dazu in newton.wdl suchen obs definiert ist)

---Dann kann mans ganz simpel schon haben: Einem Objekt die Function newtonwoodentity geben und für skill1 einen massenwert (ich glaube gerechnet in kg oder aber in pfund) einstellen, skill2 bis 5 auf 0.1 setzen und fertig. (Wenn das Objekt zu Levelstart im Boden steckt oder in der Luft schwebt muss zusätzlich noch flag2 gesetzt sein)

Nun mal das was ICH bisher vom Newtonprinzip verstanden habe:
1: Objekte werden wenn sie eine Newtonfunction bekommen in der Newtondll definiert und bekommen einen Body (ID) zugewiesen. Dieser enthält Informationen über Boundingbox und Position des Objektes und kann nicht mehr von 3dGS direkt kontrolliert werden. (Das heißt: Ist ein Objekt ein Newtonobjekt kann man es nicht mehr per Gamestudio bewegen oder seine Form verändern ohne dies durch Newtonfunktionen auf die dll zu übertragen.
2: Andersherum geht das aber sehr wohl. Das heißt Newton verändert die Position und eigenschaften des Body und passt das reale Objekt dann an die veränderten Daten an (das macht Newtonupdate). Das bedeutet man bewegt newtonobjekte indem man ihre bodyinformationen in der dll mit entsprechenden dllfunctionen (newtonbodyaddforce, etc.) verändert.
3:Um ein Objekt zu zerstören muss neben dem Gamestudioobjekt auch der Newtonbody zerstört werden (newtonremoveentity).
4:Kollision wird nur zwischen Newtonobjekten unterstüzt. Das level ist mit einbezogen wenn die Zeile am Anfang des Meainscripts richtig gesetzt ist. Auch terrain kann man theoretisch als kollisionsobjekt definieren (newtonterrain).
5:Es ist möglich mehrere Objekte miteinasnder zu verknüpfen um so komplxe Systeme wie z.B. einen Ball an einer Schnur, eine Tür an Angeln, oder ein Modell mit verschiedenen Kollisionsbereichen die sich unterschiedlich verhalten sollen zu verwirklichen. Dazu benutzt Newton Levelgruppen. Die Objekte die in der Gruppe anderen untergeordnet sind, sind an diese Angehängt. Dazu ist aber die Definition spezieller Drehpunkte von Nöten (siehe dazu unbedingt die Beispiele im Newtoncontent.
6: Die Kollisionseigenschaften wie Reibung etc. werden von Materialien gesteuert, die bei der INitialisierung eines Objektes festgelegt werden. Definiert man ein Newtonobjekt beispielsweise mit Newtonwoodentity, wird ihm das Material wood_material zugeordnet, es verhält sich ungefähr wie Holz. (das hat nichts mit den 3DGs Materialien zu tun, es ist eine Zuweisung innerhalb der dll).

So das war mal ein Überblick über das was ich bisher herausgefunden habe, noch ein kleiner Tipp am Rande: Alles was hier steht steht in etwas längerer Form auch in der Newtondokumentation die ist im Ordner docs bei den Beispielen, kleiner Blick lohnt sich wirklich
© 2024 lite-C Forums