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

 

Ergebnis 1 bis 5 von 5
  1. Beiträge anzeigen #1 Zitieren
    Knight Avatar von Draxes
    Registriert seit
    Aug 2007
    Ort
    Mainz
    Beiträge
    1.920
     
    Draxes ist offline

    Vob in Relation zur Orientation verschieben

    Hi! Bevor ich zum Threadtitel komme, beschreibe ich erstmal mein eigentliches Problem. Vielleicht kommt man schneller ans Ziel als mit meiner gedachten Lösung, bei der ich nicht weiterkomme.
    Ich habe einen Partikel-Effekt, der über shpoffsetvec_s = "-30 60 -45"; etwa seitlich und oberhalb des Helden schwebt. Jetzt will ich ein Projektil von genau dieser Stelle abfeuern. Problem dabei: Wenn ich ein Projektil mit genau diesem Offset verschieße, dann trifft das Projektil auch nicht, weil es auch mit diesem Offset beim anvisierten Ziel ankommt.

    Meine Idee um das zu lösen: Ich erstelle einfach ein Vob genau an dieser Stelle und benutze das Vob als Startpunkt des Projektils. Mit folgendem Code kann ich ein Vob verschieben:

    Code:
    arcaneCharge1_vob.trafoObjToWorld[3] = addf(arcaneCharge1_vob.trafoObjToWorld[ 3], mkf(-30));
    arcaneCharge1_vob.trafoObjToWorld[7] = addf(arcaneCharge1_vob.trafoObjToWorld[ 7], mkf(60));
    arcaneCharge1_vob.trafoObjToWorld[11] = addf(arcaneCharge1_vob.trafoObjToWorld[11], mkf(-45));
    Problem dabei: Die Werte sind relativ zum Worldspace und nicht zum hero. Von daher wird das Vob jedes mal woanders sein, je nachdem, in welche Richtung der hero schaut. Gibt es irgendeine tolle Funktion in Ikarus, die ein Verschieben relativ zur Blickrichtung des Helden gestattet? Falls nicht, wie würdet ihr da ran gehen? Habe leider gerade keinen Ansatz.

    Falls ihr eine alternative Lösung zu der Vobgeschichte parat habt, die vielleicht noch einfacher ist, dann nehme ich diese auch gerne an!

  2. Beiträge anzeigen #2 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Hilft dir dieser Post eventuell weiter? In der Funktion moveFocusInFrontOfHero wird ein Vob ein kleines Stück vor den Helden gesetzt (immer in Blickrichtung). Das musst du dann nur noch ein bisschen anpassen Neconspictor erklärt das in einem der folgenden Posts noch ein bisschen genauer.

    Disclaimer: Keine Ahnung, ob es nicht eine bessere Lösung für dein Problem gibt.

  3. Beiträge anzeigen #3 Zitieren
    Knight Avatar von Draxes
    Registriert seit
    Aug 2007
    Ort
    Mainz
    Beiträge
    1.920
     
    Draxes ist offline
    Danke schon mal für die Idee! Ich habe mir das gerade mal angeschaut und ein wenig herumprobiert. Leider kriege ich das nicht ganz auf meinen Fall umgemünzt.
    Wenn ich das richtig verstehe verschiebt die Funktion das Vob anhand des Richtungsvektors, also gerade nach vorne in dem Fall (weil ja Blickrichtung). Wie ich jetzt von dieser Idee hin zu "Ich will mein Vob an relativer Position -30 60 -45 von der Helden-Kopfposition haben" komme will gerade nicht in meinen Kopf. Vielleicht ist es auch einfach nur zu spät für sowas

  4. Beiträge anzeigen #4 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Zitat Zitat von Draxes Beitrag anzeigen
    Danke schon mal für die Idee! Ich habe mir das gerade mal angeschaut und ein wenig herumprobiert. Leider kriege ich das nicht ganz auf meinen Fall umgemünzt.
    Wenn ich das richtig verstehe verschiebt die Funktion das Vob anhand des Richtungsvektors, also gerade nach vorne in dem Fall (weil ja Blickrichtung). Wie ich jetzt von dieser Idee hin zu "Ich will mein Vob an relativer Position -30 60 -45 von der Helden-Kopfposition haben" komme will gerade nicht in meinen Kopf. Vielleicht ist es auch einfach nur zu spät für sowas
    1. Vob an die Startposition setzen (Helden-Kopf).
    2. Vob um -30 in die eine Richtung verschieben, dann 60 in die nächste und danach -45 in die letzte Richtung.



    Der Trick ist es eben, das Vob nicht einfach um absolute Koordinaten zu verschieben, sondern die Länge mit den entsprechenden Richtungsvektoren des Helden zu skalieren.

    Mit
    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));
    wird das Vob also um 50 in der Blickrichtung des Helden verschoben. Genau das gleiche machst du dann einfach noch für die anderen Richtungen, nur dass du die Indizes (10, 6, 2) änderst, d.h. (9, 5, 1) und (8, 4, 0) glaube ich.

  5. Beiträge anzeigen #5 Zitieren
    Knight Avatar von Draxes
    Registriert seit
    Aug 2007
    Ort
    Mainz
    Beiträge
    1.920
     
    Draxes ist offline
    Danke für die zusätzliche Erklärung. Als du die anderen Indizes ins Spiel gebracht hast hats Klick gemacht

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
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