Objekt mit Animation funktionsfähig in die Map einbauen?

  • Hi,


    ich habe ein riesen Problem.
    Ich habe mir ein Objekt mit Maya erstellt und dieses animiert (In der I3D(Clipanimation)).


    Dieses Objekt soll jetzt in die Map importiert werden und eigentlich nix machen außer die Animation abspielen, sprich, sich ständig bewegen.


    Leider funktioniert das nicht.


    Zum einen ist das Objekt nach dem Import InGame nicht zu sehen (ist wohl unterhalb des Terrains obwohl ich es an die 'Oberfläche' verschoben hab! 8| ) und zum anderen habe ich irgendwo gelesen, das ich die Clipanimation wohl mit einem Script aufrufen muss.


    Leider verstehe ich nicht wie das Script aussehen muss, weil es sich ja hier um ein MapObjekt handelt und nicht um ein Anbaugerät oder ähnliches.


    Kann mir da mal jemand einen Tipp geben?


    lg
    Webby

  • Wenn du ein animiertes Objekt verschieben willst musst du es in eine Transformgroup packen und dann verschieben, zumindest wenn du die Translationwerte des Objektes mit animiert hast.


    Wegen Mapscripts gibt es hier ja bereits einige Threads die sich damit auseinander setzen.. ;) Der Rest ist dann auch nix anderes als eine Animation bei einem Fahrzeug...



    LG

  • Das hätte ich erwähnen sollen, also das Objekt ist in einer TG.
    Ich hab versucht beides zu verschieben, die komplette TG und auch nur das Objekt darin.
    Ergebnis bleibt leider das gleiche -> Objekt InGame nicht zusehen und wenn ich die Map im GE wieder öffne, steht das Objekt wieder unterhalb des Terrains.


    Zu den Mapscripts, muss ich wohl mal genauer suchen, das was ich bis jetzt gefunden hatte, setzte eigentlich immer eine Fahrzeug.xml voraus, die ich ja nicht habe bei einem Mapobjekt.


    EDIT: Und ja, es werden alle Translationwerte animiert! Es sind auch alle Felder im GE Gelb unterlegt ;)


    EDIT 1: Das Objekt ist jetzt auf der Oberfläche, das hat schon mal geklappt :D
    Jetzt versuche ich mal die Animation aus der I3D abzuspielen :)


    EDIT 2: Also ich kriege es nicht hin, alles was ich hier und auch woanders gefunden habe bezieht sich immer auf ein Fahrzeug/Anbaugerät bei dem eine Taste gedrückt werden soll.
    Genau das brauche ich nicht, die Animation soll InGame gestartet werden sobald die Map gestartet wurde :(


    Danke schon mal so weit ;)

  • Auch die hat ein Script im Hintergrund laufen.. Von ganz allein wird sich kein Objekt drehen.



    Grundsätzlich brauchst du erst mal ein typisches Mapscript, das mit onCreate aufgerufen wird. Dazu gibt es hier wirklich schon Threads.. Sogar einer von dir, MapSoundTrigger. Wenn ich mich Recht erinnere stand da am Ende sogar schon ein Code für ein solches Script..



    Und wie gesagt, alles andere ist wie bei einem Fahrzeug. Die Daten werden im load() Teil geladen, anstatt getXMLString etc. kannst du mit getUserAttribute(id,"attributName") einen Wert, String etc. aus den userAttributes laden.
    Anstatt Utils.indexToObject verwendet man getChildAt(id, position) was einfach anhand des Objektes "id" und der Zahl Position eine Untergruppe von "id" definiert..
    Id ist in dem Fall die Id des Objekts die du von der onCreate Funktion bekommst.. ;)




    LG

  • Danke für die Tipps, ich muss mal gucken wie ich das Ganze zusammen klöppeln kann.
    Irgendwie hab ich z.Z keinen klaren Kopf. Hier stapeln sich Scripts ohne Ende, die ich alle noch fertig machen will...


    Norderland
    Eigentlich ist es egal was das für eine Animation ist, da sie in der I3D eingebaut ist ;)
    Ich weiß nur noch nicht genau, wie ich die Lua aufbauen muss :)


    modelleicher
    Ich guck mir das Ganze mal an, irgendwie muss es ja gehen ;)
    Kaum mach ich mal ein paar Wochen pause, hab ich die Hälfte vergessen 8|


    Ich danke euch :D


    lg
    Webby

  • Hi,
    ich habe meinem Objekt mit der Animation folgendes hinzugefügt:


    XML
    <UserAttributes>
    <UserAttribute nodeId="15">
    <Attribute name="onCreate" type="scriptCallback" value="ObjAni.onCreate"/>
    </UserAttribute>
    </UserAttributes>


    Würde das reichen oder muss da noch etwas rein?


    Das Script sieht bis jetzt so aus:
    [lua]
    ObjAni = {};
    local ObjAni_mt = Class(ObjAni, Object);


    function onCreate(self, id)
    local instance = ObjAni:new(g_server ~= nil, g_client ~= nil);
    local index = g_currentMission:addOnCreateLoadedObject(instance);
    instance:load(id);
    instance:register(true);
    end;


    function ObjAni:new(isServer, isClient)
    local self = Object:new(isServer, isClient, ObjAni_mt);
    self.className = "ObjAni";
    return self;
    end;


    function ObjAni:load(name)
    end;


    function ObjAni:delete()
    end;


    function ObjAni:update(dt)
    end;
    [/lua]


    Was mir jetzt noch fehlt ist der richtige Code für den load() Bereich.
    Laut der Scriting Ref spielt man eine Animation mit
    [lua]setAnimTrackSpeedScale(charSet, 0, speedScale) [/lua]


    ab aber wie genau müsste das aussehen?


    lg
    Webby

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!