Objekt laden und verschieben

  • Hallo Leute,


    ich habe mal ein Problem:


    Ich möchte via Script einen Trigger laden, was (anscheinend) auch funktioniert, wenn ich Ihn dann allerdings von 0|0|0 zu meiner aktuellen Player.RootNode verschieben will, kommt er dort nicht an...


    Bei erneuter Abfrage der Position liegt diese aber da, wo ich es haben will... Sehen kann ich trotzdem nix.


    [expander][lua]
    function Test:loadMap(name)


    self.PositionX = 0;
    self.PositionY = 0;
    self.PositionZ = 0;


    self.PressedTime = 0;
    self.PositionAvailable = false;

    self.TestI3D = loadI3DFile(Test.modDirectory .. "trigger.i3d");
    link(g_currentMission.rootNode, self.TestI3D);

    end;


    [...]


    function Test:update(dt)


    if InputBinding.isPressed(InputBinding.Test_SetLocation) then

    self.PressedTime = self.PressedTime + dt;

    else

    self.PressedTime = 0;

    end;

    if self.PressedTime >= 1500 then

    self.PositionX, self.PositionY, self.PositionZ = getWorldTranslation(g_currentMission.player.rootNode);
    self.PositionAvailable = true;
    self.PressedTime = 0;
    print(self.PositionX);
    print(self.PositionY);
    print(self.PositionZ);
    print("---------------");
    self.PositionA, self.PositionB, self.PositionC = getWorldTranslation(self.TestI3D);
    print(self.PositionA);
    print(self.PositionB);
    print(self.PositionC);
    setTranslation(self.TestI3D, self.PositionX, self.PositionY, self.PositionZ);
    print("---------------");
    self.PositionA, self.PositionB, self.PositionC = getWorldTranslation(self.TestI3D);
    print(self.PositionA);
    print(self.PositionB);
    print(self.PositionC);

    end;


    end;[/lua][/expander]


    Ich hoffe Ihr könnt mir helfen und schonmal vielen Dank an alle die Antworten


    Gruß
    Wagenheber

    Einmal editiert, zuletzt von Wagenheber () aus folgendem Grund: --> Codefehler korrigiert

  • Ups, *peinlich*


    Ich hab den Code gekürzt und nur das wesentliche in den Beitrag geschrieben, da ist mir der Fehler wohl unterlaufen, im Original passt es allerdings. Ich hab's geänder und hoffe, dass sich nicht noch irgendwo sowas eingeschlichen hat.


    Aber da im Original die Variable ja richtig bezeichnet ist, müsste es ja eigentlich gehen...


    Trotzdem schonmal Danke für die Antwort!

  • So lädst du ja nur ein I3d File. Inwieweit du das verschieben kannst, weiß ich gerade gar nicht. Aber dein Trigger ist ja auch im i3dFile irgendwo.


    Den musst du erst deklarieren:


    [lua]
    local testI3dObjectRoot = Utils.loadSharedI3DFile(Test.modDirectory .. "trigger.i3d", "");
    self.TestI3D = getChildAt(testI3dObjectRoot, 0);
    link(getRootNode(), self.TestI3D);
    delete(testI3dObjectRoot);
    [/lua]

Jetzt mitmachen!

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