Ihr könnt direkt global im Lua Script festlegen dass ihr Unterwasser ein anderes Audio abspielen möchtet als an Land.
Im Audio Folder braucht ihr folgendes Setup:
Dazu braucht ihr folgendes Script:
LevelFuncs.OnStart = function()
LevelVars.PlayNormalBackgroundAudio = true
LevelVars.PlayUnderwaterBackgroundAudio = false
end
LevelFuncs.OnLoop = function()
PlayBackgroundAudios()
end
function PlayBackgroundAudios()
local CurrentRoom = Lara:GetRoom()
if not LevelVars.PlayNormalBackgroundAudio and not CurrentRoom:GetFlag(RoomFlagID.WATER) then
LevelVars.PlayUnderwaterBackgroundAudio = false
LevelVars.PlayNormalBackgroundAudio = true
PlayAudioTrack("200-Normal", SoundTrackType.LOOPED)
end
if not LevelVars.PlayUnderwaterBackgroundAudio and CurrentRoom:GetFlag(RoomFlagID.WATER) then
LevelVars.PlayUnderwaterBackgroundAudio = true
LevelVars.PlayNormalBackgroundAudio = false
PlayAudioTrack("201-Underwater", SoundTrackType.LOOPED)
end
end
Display More
Erklärung:
Beim Levelstart definiert ihr das, was standardmäßig abgespielt werden soll (normal soll Standard sein):
LevelFuncs.OnStart = function()
LevelVars.PlayNormalBackgroundAudio = true
LevelVars.PlayUnderwaterBackgroundAudio = false
end
In der OnLoop Funktion (also jeden Frame des Spiels) definiert ihr, dass die Funktion aufgerufen werden soll, die entscheidet welches Audio abgespielt werden soll:
In der Funktion selbst, wird die Entscheidung getroffen welches Audio gespielt wird. Dafür wird der Raumtyp ausgelesen und in die Variable "CurrentRoom" gespeichert local CurrentRoom = Lara:GetRoom().
Außerdem prüfen wir die Variablen ab, die vorher definiert wurden.
Entscheidung für normales Background Audio
Wenn nicht das Normale Background Audio schon gespielt wird und der Raumtyp nicht Wasser ist, dann
if not LevelVars.PlayNormalBackgroundAudio and not CurrentRoom:GetFlag(RoomFlagID.WATER) then
Lege in den Variablen fest, dass wir jetzt nicht das Unterwasser Background Audio spielen und dass wir stattdessen den normalen Background abspielen:
Spiele das normale Background Audio
PlayAudioTrack("200-Normal", SoundTrackType.LOOPED)
Entscheidung für Unterwasser Background Audio
Wenn nicht das Unterwasser Background Audio schon gespielt wird und der Raumtyp Wasser ist, dann
if not LevelVars.PlayUnderwaterBackgroundAudio and CurrentRoom:GetFlag(RoomFlagID.WATER) then
Lege in den Variablen fest, dass wir jetzt Unterwasser Background Audio spielen und dass wir nicht mehr den normalen Background abspielen:
Spiele das Unterwasser Background Audio
PlayAudioTrack("201-Underwater", SoundTrackType.LOOPED)
Bedenkt, dass sobald Lara schwimmt, nun auch der Unterwassersound abgespielt wird, auch wenn sie noch nicht komplett untergetaucht ist, da sie sich technisch schon im Unterwasserraum befindet.
Wollt ihr das Audio erst abspielen wenn sie wirklich untergetaucht ist, könnt ihr noch einen Trick anwenden.
Dazu fragt ihr dann nicht den Raumtyp ab, sondern die Luft die Lara noch hat (1800 Maximalwert - pro Sekunde werden 30 abgezogen, nach 60 Sekunden ist die Luft weg).
Wenn ihr das benötigt, kommt hier das Alternative Script:
function PlayBackgroundAudios()
local MaxAirValue = 1800
if not LevelVars.PlayNormalBackgroundAudio and Lara:GetAir() == MaxAirValue then
LevelVars.PlayUnderwaterBackgroundAudio = false
LevelVars.PlayNormalBackgroundAudio = true
PlayAudioTrack("200-Normal", SoundTrackType.LOOPED)
end
if not LevelVars.PlayUnderwaterBackgroundAudio and Lara:GetAir() < MaxAirValue then
LevelVars.PlayUnderwaterBackgroundAudio = true
LevelVars.PlayNormalBackgroundAudio = false
PlayAudioTrack("201-Underwater", SoundTrackType.LOOPED)
end
end
Display More