Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Results 1 to 4 of 4
  1. View Forum Posts #1 Reply With Quote
    Legende der Amazonen Bisasam's Avatar
    Join Date
    Dec 2006
    Location
    Meine Faust in Sinis Gesicht
    Posts
    8,916
     
    Bisasam is offline

    Relative Positionen ausrechnen? Wie geht das?

    Hi Leute,

    ich habe folgendes Problem:

    Ich möchte einen Pfx-Effekt exakt 50 ingame-cm VOR einem Vob einfügen.
    Bei dem Vob handelt es sich um einen großen Ofen, weshalb ein Einfügen an exakt dem Nullpunkt des Vobs unschön aussieht bzw. Oft nicht zu sehen ist.
    Ich dachte, wenn ich einfach die Position nehme und überall 50 (Ausnahme Oben) draufrechne, kommt das schon hin. Aber Pustekuchen. Wenn man exakt an den Achsen der Welt ausgerichtet ist gehts. Wenn man nicht exakt ausgerichtet ist, spawnt das Ding mal rechts oder links daneben oder sogar dahinter.
    Ich muss also irgendwie die Position mit Berücksichtigung Der Ausrichtung des Vobs rauskriegen. Ich muss wissen, wohin das Vob "guckt" und anhand dessen die Position meines Feuers bestimmen.
    Ich weiß nur nicht wie genau das gehen soll. Gibt es so relative Positionen überhaupt?


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

  2. View Forum Posts #2 Reply With Quote
    Dea
    Join Date
    Jul 2007
    Posts
    10,207
     
    Lehona is offline
    Darüber haben wir sogar schonmal geredet

    Der springende Punkt sind folgende Zeilen:
    Code:
    var int delta; delta = mkf(50);
    Vob_Move(vobPtr, mulf(her.trafoObjToWorld[10], delta), mulf(her.trafoObjToWorld[6], delta), mulf(her.trafoObjToWorld[2], delta));
    Dabei ergeben sich die Indizes wie folgt (glaube ich - es ist lange her):
    10 = 8+2, 6 = 4+2, 2 = 0+2

    0, 4 und 8 sind die Spalten (X, Y, Z) in der TrafoMatrix, und +2 ist "vorne". Es gibt auch noch oben (+1) und links (+0). Wobei letzteres auch vielleicht auch rechts ist, da bin ich mir nicht so sicher.

    Code:
    mulf(her.trafoObjToWorld[10], delta), mulf(her.trafoObjToWorld[6], delta), mulf(her.trafoObjToWorld[2], delta)
    Berechnet den Vektor (dx, dy, dz), also die Verschiebung der Koordinaten um das Vob die gewünschte Distanz in die (in diesem Fall) "vorne"-Richtung zu bewegen. In anderen Worten: Wenn der Held an X-Koordinate x ist, muss das Vob an X-Koordinate x+dx stehen.
    Du kannst aber natürlich auch einfach Vob_Move verwenden und die Koordinaten nicht noch selber verändern.

  3. View Forum Posts #3 Reply With Quote
    Ehrengarde Neconspictor's Avatar
    Join Date
    Jan 2009
    Posts
    2,644
     
    Neconspictor is offline
    Quote Originally Posted by Lehona View Post
    0, 4 und 8 sind die Spalten (X, Y, Z) in der TrafoMatrix, und +2 ist "vorne". Es gibt auch noch oben (+1) und links (+0). Wobei letzteres auch vielleicht auch rechts ist, da bin ich mir nicht so sicher.
    Gothic verwendet ein linkshändiges Koordinatensystem. Die X-Axis zeigt nach rechts, Y nach oben und Z nach vorne.

  4. View Forum Posts #4 Reply With Quote
    Knight mud-freak's Avatar
    Join Date
    Dec 2005
    Posts
    1,358
     
    mud-freak is offline
    Viel einfacher ist es den Offset (shpoffsetvec_s) im lokalen Koordinatensystem (shpfor_s = "OBJECT") in der Pfx-Instanz festzulegen.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide