Name Typ Von
alignObj("c", "t") Definition AFRLme

Mit dieser kleinen Funktion kannst du schnell einen Charakter an einem Objekt ausrichten.


Zusätzliche Informationen
Die Ausrichtung basiert auf der Zeichenmitte, die normalerweise in der Nähe der Füße liegt.
Es gibt keine einfache Methode zum Ermitteln der oberen (y) Pixelkoordinate der aktuell aktiven Charakteranimation.
Die Ausrichtung am Objekt basiert auf der Interaktionsposition des Objekts. Möglicherweise ändere ich dies in Zukunft in die Position des Objektversatzes.


Anweisungen

1. Füge das Hauptskript im Skripteditor von Visionaire Studio hinzu und lege es als Definitionsskript fest.
2a. Den aktuellen Charakter an einem Objekt ausrichten ...

alignObj(nil, "Rock")

2b. Um ein bestimmtes Zeichen an einem Objekt auszurichten ...

alignObj("Tom", "Rock")


Hauptskript

function alignObj(c, t)
 if c == nil then c = game.CurrentCharacter else c = Characters[c] end -- store character or current character
 t = game.CurrentScene.Objects[t] -- store target object
 -- + --
 local p1 = c.Position -- store character position
 local p2 = t.Position -- store object position
 -- + --
 local ax, ay
 ax = p2.x - p1.x -- calculate x destination coordinate
 ay = p1.y - p2.y -- calculate y destination coordinate
 -- + --
 local angle = math.deg( math.atan(ay, ax) ) -- calculate angle
 if angle < 0 then angle = 360 + angle end -- some fallback? I don't remember why I wrote it
 -- + -- 
 c.Direction = angle -- update specified characters direction
end


Syntaxaufschlüsselung

Name Typ Beschreibung
c „string“ oder null Ein „String“-Wert mit dem Namen des Charakters, der ausgerichtet werden soll, oder nil für den aktuellen Charakter.
t „Zeichenfolge“ Ein „String“-Wert mit dem Namen des Objekts, an dem du ausrichten möchtest.