| Name | Typ | Von |
|---|---|---|
| Schiebeschnittstelle MKIII | Definition | AFRLme |
Mit diesem Skript schiebst du Interfaces beim Überfahren mit der Maus, per Mausrad, per Tastendruck oder über einen Interface-Button ein und aus. Das Skript setzt Visionaire Studio 5+ voraus.
| Kurzer Hinweis Nr. 1: Das Interface lässt sich nur ein- oder ausschieben, wenn es ganz ein- oder ausgefahren ist. Eine laufende Bewegung kannst du nicht unterbrechen. Dafür müsste man den aktuellen Anteil zwischen Start- und Zielposition berechnen, um die Geschwindigkeit beizubehalten, und das lohnt den Aufwand hier nicht. |
| Kurzer Hinweis Nr. 2: Visionaire Studio unterstützt alle hier aufgeführten Easing-Optionen Seite. |
Version 1: Tabellen
Diese Version speichert Position, Easing und Dauer für jedes Interface, das du ausfahren willst, in Lua-Tabellen. Sie ist insgesamt einfacher zu nutzen, weil du nicht jedes Mal alle Daten an die Funktion übergeben musst.
Anweisungen
1. Füge dieses Skript im Skriptbereich des Editors von Visionaire Studio hinzu und lege es als Definitionsskript fest ...
--[[
Sliding Interface MKIII [v1] (14/08/2022)
Written by AFRLme [Lee Clarke]
-- + --
email: afrlme@outlook.com
paypal: afrlme@zoho.com
patreon: https://www.patreon.com/AFRLme
portfolio: https://afrl.me
-- + --
This script is donation optional. In game credit is non-negotiable.
You are free to: ¹ use it in your game(s). ² modify the script.
Do not remove - or edit - this comment block.
--]]
local tInt = {
["int_example_1"] = { In = {x = 390, y = 710}, Out = {x = 390, y = 530}, dur = 1000, eIn = easeQuintIn, eOut = easeBounceOut },
["int_example_2"] = { In = {x = 390, y = -190}, Out = {x = 390, y = -10}, dur = 1200, eIn = easeQuintIn, eOut = easeQuintOut }
}
function slideInt(int)
if Interfaces[int].Offset.x == tInt[int].In.x and Interfaces[int].Offset.y == tInt[int].In.y then -- slide out
Interfaces[int]:to(tInt[int].dur, { Offset = {x = tInt[int].Out.x, y = tInt[int].Out.y} }, tInt[int].eOut)
elseif Interfaces[int].Offset.x == tInt[int].Out.x and Interfaces[int].Offset.y == tInt[int].Out.y then -- slide in
Interfaces[int]:to(tInt[int].dur, { Offset = {x = tInt[int].In.x, y = tInt[int].In.y} }, tInt[int].eIn)
end
end
| Kurzer Hinweis: Trage im Skript oben die Namen aller Interfaces ein, die ein- und ausfahren sollen. Lege außerdem die Standardposition [In] und die Zielposition [Out] der Interfaces fest. Vergiss nicht, die Dauer der Bewegung und das gewünschte Easing anzugeben. |
2. Um das Skript zu nutzen, legst du in den Tastenaktionen, Mausaktionen (Betreten/Verlassen), Befehlsaktionen usw., mit denen ein Interface ausfahren soll, einen Aktionsteil Skript ausführen an und fügst etwa diese Codezeile ein ...
slideInt("int_example_1")
Version 2: Nur Funktion
Bei dieser Version übergibst du alle nötigen Argumente selbst: den Namen des Interface, die Standardposition (in) und die Zielposition (out), einen booleschen Wert, ob das Interface ein- oder ausfahren soll, die Dauer in Millisekunden und zuletzt das gewünschte Easing. Wie du siehst, ist diese Version deutlich aufwendiger, weil du dir die Angaben für jedes Interface irgendwo notieren musst.
Anweisungen
1. Füge dieses Skript im Skriptbereich des Editors von Visionaire Studio hinzu und lege es als Definitionsskript fest ...
--[[
Sliding Interface MKIII [v2] (14/08/2022)
Written by AFRLme [Lee Clarke]
-- + --
email: afrlme@outlook.com
paypal: afrlme@zoho.com
patreon: https://www.patreon.com/AFRLme
portfolio: https://afrl.me
-- + --
This script is donation optional. In game credit is non-negotiable.
You are free to: ¹ use it in your game(s). ² modify the script.
Do not remove - or edit - this comment block.
--]]
function slideInt(int, spos, tpos, duration, eIn, eOut)
if Interfaces[int].Offset.x == spos.x and Interfaces[int].Offset.y == spos.y then -- slide out
Interfaces[int]:to(duration, { Offset = {x = tpos.x, y = tpos.y} }, eOut)
elseif Interfaces[int].Offset.x == tpos.x and Interfaces[int].Offset.y == tpos.y then -- slide in
Interfaces[int]:to(duration, { Offset = {x = spos.x, y = spos.y} }, eIn)
end
end
2. Um das Skript zu nutzen, legst du in den Tastenaktionen, Mausaktionen (Betreten/Verlassen), Befehlsaktionen usw., mit denen ein Interface ein- oder ausfahren soll, einen Aktionsteil Skript ausführen an und fügst etwa diese Codezeile ein ...
slideInt("int_example", {x = 390, y = 710}, {x = 390, y = 530}, 1000, easeQuintIn, easeBounceOut)
Version 3: Rohskript
Nennen wir diesen Abschnitt einfach einen Bonus. Ich erkläre dir die Tweening-Funktion to(), zeige dir die Syntax und Beispiele, wie du damit ein Interface ein- oder ausfährst, und zum Schluss, wie du ein Interface im Wechsel ein- und ausfährst.
Syntax
to(duration, {arguments}, easing, loop, pendulum)
Beispiel 1: Herausschieben
local int = Interfaces["int_example"]
if int.Offset.y == 710 then
int:to(1000, { Offset = {x = int.Offset.x, y = 530} }, easeBounceOut)
end
Beispiel 2: Einschieben
local int = Interfaces["int_example"]
if int.Offset.y == 530 then
int:to(1000, { Offset = {x = int.Offset.x, y = 710} }, easeQuintIn)
end
Beispiel 3: Umschalten
local int = Interfaces["int_example"]
if int.Offset.y == 710 then
int:to(1000, { Offset = {x = int.Offset.x, y = 530} }, easeBounceOut)
elseif int.Offset.y == 530 then
int:to(1000, { Offset = {x = int.Offset.x, y = 710} }, easeQuintIn)
end
Ressourcen
| Name | Beschreibung |
|---|---|
| sliding_interface_mk3.zip | Ein funktionierendes Beispiel des Skripts in Aktion. Visionaire Studio 5.1.9.2+ erforderlich, um die enthaltenen .ved-Dateien auszuführen. |