Ergebnis 1 bis 16 von 16

Thema: Held nach der Maus ausrichten

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Held nach der Maus ausrichten

    Hallo ich hoffe eine/r von euch kann mir helfen ich überleg schon seit Stunden wie ich das machen soll und weiss nicht wie...

    also:
    Durch die Mausunterstützung der Ineluki-Patches lass ich (im RM2k) die Position der Maus abfragen...jetzt möchte ich es so hinbekommen, dass der Held in eine der 8 möglichen Richtungen schießt, wenn ich mit der Maus klicke, und zwar relativ dazu, wie die Maus zu ihm steht, so dass er mehr oder weniger immer zur Maus schaut.
    Und zwar sollte das so sein, dass der Held nicht nur dann z.B. nach oben schaut, wenn die Maus exakt über ihm ist, sondern in einem gewissen Raum, so dass jede der 8 möglichen Richtungen genau 1/8 des Raums um den Helden bekommt.

    Hoffentlich hab ich mich verständlich genug ausgedrückt...

  2. #2
    Die X-Position und die Y-Potion der aktuellen Mausposi nehmen, in ne 2 andere Variablen speichern, die dann durch 16 teilen ( So bekommt man die koordinaten raus) dann in 2 ander varis, die x und y pos speichern, und nach altem Rezept über Forks mit den geteilten positionen aus der Maus vergleichen! Fertig!
    Sind die Bedingungen erfüllt, machst du halt ne Moveevent in dem Der Held sich in die Richtung dreht...
    Das ganze muss in einem PP-Event, undzwar ohne Wait!!!!!!!! Keine Sorge es wird nich hacken, und wenn odch hast du was nicht richtig gemacht^^
    Ich habs nämlich schon selbst probiert und es hat geklapt.

    Mfg R.D.

  3. #3
    Hmm ja auf die Idee bin ich auch schon gekommen nur was ist wenn die Maus weiter vom Helden weg ist? Dann vergrößern sich die Abstände und der Raum, der jeder der 8 Richtungen zugeordnet wird, wird größer...ich hab schon versucht, das mit den Verhältnissen der Koordinaten untereinander zu lösen doch dann wirds sehr kompliziert und funktioniert nie so wie ich will...

  4. #4
    Ganz einfach du rchnest die Posi, des Helden - der posi der Maus, nun muss du nur noch abragen machen mit 1 und -1
    Steht der Held rechts (pos=12) und die maus weiter links (pos=6)
    12-6=6
    Da es über 1 ist heißt es die Maus ist links
    Würde die maus weiter rechts stehen (pos=15)
    12-15=-3
    Da es -1 oder kleiner ist heißt das die Maus ist rechts

  5. #5


    So mein ich das...in der Mitte das ist der Held und es soll herausgefunden werden in welchem der (schwarz und weißen) Sektoren er sich befindet...es sind 8 Sektoren stellvertretend für die 8 Richtungen.

    /edit: Ich hoffe ihr habt das nicht falsch verstanden ist mir grad so aufgefallen...ich meinte in welchem der Sektoren sich die Maus befindet...hoffe mal dass habt ihr euch gedacht weil der Held ja in der Mitte steht...sry

    Geändert von Adamaro (22.03.2008 um 19:25 Uhr)

  6. #6
    Na Dann wird ich einfach die Mitte als X-Scene und Y-Scene das gleiche dann beim Held. Das eine - das andere und Wenn de nun mit Forks abfragst, dann kannst du doch herrausfinden in welchem Sektor der Held sich befindet
    Bei schrägen dann halt in den Forks nochmal Forks zu überprüfung
    z.B. abfrage der X werte, danach die der y-Werte
    Sind die dann kleiner oder größer muss sich der Held in einem der Sektoren befinden...

  7. #7
    Ich werds mal probieren...bzw mir ne andere Lösung einfallen lassen^^

  8. #8
    Strahlensatz:
    Bei gleichbleibendem Winkel ist das Verhältnis der Ankathete und Gegenkathete in einem Dreieck mit rechtem Winkel identisch

    Erst prüfst du, zu welchem Viertel in NW, NE, SW, SE der Punktam ehesten gehört (sprich ob X- und Y-Abstand jeweils negativ oder positiv sind)
    Dann schaust du, welcher Abstand im Betrag größer ist um ihn nochmal in ein Viertel zuordnen zu können, nur diesmal N, S, E, W

    Anschließend rechnest du auf einem Blatt Papier geometrisch aus, wie groß die Gegenkathete ist, wenn der Punkt gerade von schwarz auf weiß wechselst und die Ankathete eine Länge von 1 hat
    Dieses Ergebnis ist das Verhältnis von Gegenkathete und Ankathete auf eben jenem Übergang, nennen wir das Ergebnis V.
    Dein Algorithmus teilt jetzt die Gegenkathete durch die Ankathete (der betragsgrößere Abstand ist die Länge der Ankathete, der andere der der Gegenkathete) . Ist das, was rauskommt, kleiner als V, so ist der Punkt im Schwarzen, ist er größer, im Weißen.

    Die errechneten Daten sind genug, um eindeutig zuteilen zu können

    Da der Maker in ganzen Zahlen rechnet und V kleiner als 1 ist, musst du alle Werte mit einem Faktor malnehmen. (100 passt)

    alles klar oder brauchst du Skizzen? Ich kann dir auch Pseudocode schreiben wenn du willst.
    Kommst du mit dem Ausrechnen von V klar? (weiß jetzt nicht, wie weit du schon in Mathematik bist)

  9. #9
    Müsst ich eigentlich hinbekommen aber so ein grober Code wär ganz nett...wenns nicht zuviel Arbeit macht.

    /edit: Hab da oben noch was dazu geschrieben bei dem Bild...hoffe mal ihr habt das richtig verstanden ich hatte mich da verschrieben...

    Geändert von Adamaro (22.03.2008 um 19:26 Uhr)

  10. #10
    //Ich gehe von 8 Switchen aus, jeder steht für ein Gebiet und der Code schließt nun Switch für Switch aus bis nur noch einer anbleibt

    Change Switch Range (N, NW, W, SW, S, SE, E, NE) ON
    Change Variable Y = Mouse Y Position
    Change Variable Y -= Hero Scene Y
    Change Variable X = Mouse X Position
    Change Variable X -= Hero Scene X

    //Beträge
    Change Variable BetY = Y
    fork (BetY < 0) { BetY *= -1 }
    Change Variable BetX = X
    fork (BetX < 0) { BetX *= -1 }

    Show Message "Test 1"
    fork (X = 0) { fork (Y=0) { Change Switch Range (N, NW, W, SW, S, SE, E, NE) OFF } }

    fork (Y < 0) { Change Switches S, SE, SW OFF }
    else { Change Switches N, NE, NW OFF }
    fork (X < 0) { Change Switches E, NE, SE OFF }
    else { Change Switches W, NW, SW OFF }

    Show Message "Test 2"
    fork (BetX < BetY) {
    Change Switches W, E OFF
    Change Variable GegK = BetX
    Change Variable AnK = BetY
    }
    else {
    Change Switches N, S OFF
    Change Variable GegK = BetY
    Change Variable AnK = BetX
    }

    //Teile Gegenkathete durch Ankathete und schaue das dadurch errechnete Verhältnis an
    Show Message "Test 3"
    Change Variable GegK *= 10
    Change Variable GegK /= AnK
    fork (GegK >= 5) { Change Switches N, S, E, W OFF }
    else { Change Switches NE, NW, SE, SW OFF }

    Show Message "Test 4"

    //Jetzt müsste nur noch einer der Switche an sein, der Code bevorzugt schwarze Gebiete, Norden vor Süden und Westen vor Osten falls der Mauszeiger auf einem Übergang liegt

    Geändert von Dhan (23.03.2008 um 08:35 Uhr)

  11. #11
    Puh okay mal gucken ob ich das im Maker hinkrieg....
    aber auf jeden Fall schonmal vielen Dank für die Mühe^^

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •