Wie geht das genau?



  • Hi,

    kann mir einer sagen, wie man in einer Iso-Welt so schräg an den wänden gehen kann ohne an ihnen kleben zu bleiben? 😕

    So wie hier: http://www.blizzard.de/images/diablo2/sor-ss02.jpg

    Wie kann man sowas realisieren? 😕



  • diese "iso-welt" ist auch nur ein riesiges zweidimensonales array, in dem es bereiche gibt die begehbar sind und welche die nicht begehbar sind. stell dir die welt um 45 grad nach links gedreht vor (->linkskrümmung), dann kann man sich besser vorstellen wie sie aufgebaut ist. sie wird nur so schräg dargestellt, ist aber eigentlich eine große rechtwinklige "kachelmap".

    wenn man nun an einer wand in einen bereich klickt, in den man nicht gehen kann, dann wird die position nur im begehbaren bereich verändert, oder anders gesagt, man versucht sich der eigetlichen position so nah wie möglich anzunähern, in dem man nur das berechnet was man berrechnen kann/will. das ergibt dann diese bewegung.

    x
              y ##########
                #        #
                #        #
                #        #
                #        #
                #        #
        q       #        #
                #^       #
                #|       #
                #p       #
                #        #
                #        #
                ##########
    

    p=momentane position
    q=klickposition

    jetzt wird einfach die nächste position berechnet, die man hätte, wenn man von p nach q gehen könnte (also ohne wände). wenn dann x und/oder y in einem bereich liegen, den man nicht begehen kann, dann wird x/y entsprechend geclippt und zurück auf einen wert gesetzt, der gültig ist. dadurch ergibt es sich das der y wert immer weiter noch oben steigt, der x wert aber bei seiner momentanen position bleibt. man "gleitet" nach oben bis py=qy ist.

    das ist eigentlch nichts besonderes, also nichts was "extra reinprogrammiert" wurde, sonder vielmehr ein simpler effekt des clipping, was sowieso gemacht werden muss, damit man nicht duch wände gehen kann. das ist eignetlich in jedem spiel so (-> siehe counter-strike o.ä.).

    wenn man mit einem auto leicht schräg gegen eine wand fährt passiert eigentlich das selbe. das auto versuchs die nächste position zu erreichen, die es beim aktuellen richtungsvektor einehmen würde, aber die wand clippt den x wert so, das sich das auto nur in y richtung bewegt. 🙄 😃

    [ Dieser Beitrag wurde am 20.06.2003 um 02:48 Uhr von KXII editiert. ]

    [ Dieser Beitrag wurde am 20.06.2003 um 02:49 Uhr von KXII editiert. ]


Anmelden zum Antworten