|
| Om det här är ditt första besök, se till att gå till vår FAQ (finns även länk till FAQ i navigeringsmenyn ovan). Du kan behöva att registrera dig innan du kan posta (finns även en länk till registrering i navigeringsmenyn ovan). För att titta på inlägg, välj det forum som du vill besöka från de som är listade nedan. |
|
|||||||
|
|
Ämnesverktyg | Visningsalternativ |
|
|
#11 | |
|
Medlem
Reg.datum: Jul 2010
Ort: Uppsala
Inlägg: 562
|
Citat:
2. Vad är det för animationer du har för ljuset i strålkastarna? Normalt brukar dessa bara vara oanimerade objekt i 3dsmax med materialet TrainEmissiveGlow(passar bäst för helljus) och/eller addTex(halvljus) som du gömmer/visar beroende på läget av ljusreglaget. Utan att ha koll på x2:ans alla strålkastarlägen så gör jag ett skriptexempel(ej komplett och troligtvis med en hel del fel eftersom jag inte har möjlighet att testa med trial/errror metoden) som kanske kan ge några ideer. Halvljus nedre med objekt 1_128_HLHalvNedre Helljus nedre med objekt 1_128_HLHelNedre Halvljus övre med objekt 1_128_HLHalvOvre Helljus övre med objekt 1_128_HLHelOvre Slutljus med objekt 1_128_Slutljus Eftersom slutljuset ska slås på i en helt annan vagn så kommer man att behöva skicka ett meddelande från lok->manövervagn och vice versa när dessa ska vara av/på. Kod:
--GLOBALS
animationTimer=0
animationONTime=0.9 --hur länge lampan lyser i animationcykeln(kan ej exakta värden)
animationOFFTime=1.1 --hur länge lampan är släckt i animationcykeln
animationON=false
slutljus_msg_id=1000
slutljusON=false
gInit=false
--END GLOBALS
function Initialise ()
Call("BeginUpdate")
end
--Vissa saker går ej att göra i bas Initialse funktionen då tex child-objekt i blueprinten ofta inte är registrerade vid den tidpunkten när skriptet körs.
--Denna funktion körs första gången skriptet kör Update() och då kan man vara säker på att alla objekt/kontroller kan sättas som man vill
function safeInitialise()
LightsOFF()
end
function LightsOFF()
Call("*:ActivateNode","HLHalvNedre",0)
Call("*:ActivateNode","HLHelNedre",0)
Call("*:ActivateNode","HLHalvOvre",0)
Call("*:ActivateNode","HLHelOvre",0)
Call("*:ActivateNode","Slutljus",0)
Call("*:SendConsistMessage",slutljus_msg_id,0,1) --skicka meddelande om slutljus av till manövervagnen
end
function LightsON(hlcontrolpos)
LightsOFF() --Resetta alla lampor innan den nya konfigurationen slås på
if hlcontrolpos==1 then
--halvljus ovre/undre
Call("*:ActivateNode","HLHalvNedre",1)
Call("*:ActivateNode","HLHalvOvre",1)
Call("*:SendConsistMessage",slutljus_msg_id,1,1)
elseif hlcontrolpos==2 then
--halvljus övre, helljus nedre
Call("*:ActivateNode","HLHelNedre",1)
Call("*:ActivateNode","HLHalvOvre",1)
Call("*:SendConsistMessage",slutljus_msg_id,1,1)
elseif hlControlpos==3 then
--helljus övre, helljus nedre
Call("*:ActivateNode","HLHelNedre",1)
Call("*:ActivateNode","HLHelOvre",1)
Call("*:SendConsistMessage",slutljus_msg_id,1,1)
--elseif.....för eventuella andra lägen
end
end
function SlutljusAnimate(dtime)
if not slutljusON then
if animationON then
Call("*:ActivateNode","Slutljus",0)
animationON=false
animationTime=0
end
return
end
animationTimer=animationTimer+dtime
if not animationON and animationTimer>animationOFFTime then
Call("*:ActivateNode","Slutljus",1)
animationON=true
animationTime=0
elseif animationON and animationTime>animationONTime then
Call("*:ActivateNode","Slutljus",0)
animationON=false
animationTime=0
end
end
function OnControlValueChange ( name, index, value)
if Call( "*:ControlExists", name, index ) then
if name=="LiveInjectorWater" then
LightsON(value)
end
end
Call( "*:SetControlValue", name, index, value)
end
function OnConsistMessage(msg,argument,direction)
--Ta emot meddelande om slutljus i loket skickat från manövervagnen
--Denna funktion måste även speglas i skriptet för manövervagnen så att slutljuset i tänds när man styr från loket
if msg==slutljus_msg_id then
if argument==0 then
--slutljus av
slutljusON=false
else
--slutljus på
slutljusON=true
end
end
Call("SendConsistMessage",msg,argument,direction ) --Skicka alla meddelanden vidare
end
function Update(dTime)
if gInit==false then
gInit=true
safeInitialise()
end
SlutljusAnimate(dTime)
end
För att meddelanden ska kunna skickas genom tåget så måste även alla vagnar ett skript. Så i varje vagn behövs minst... Kod:
function OnConsistMessage(msg,argument,direction)
Call("SendConsistMessage",msg,argument,direction ) --Skicka alla meddelanden vidare
end
P.S. X2:an ser helt grymt ut! Fantastiskt snyggt jobbat! D.S.
__________________
Försöker bygga Älvsjö godsbangård men svär mest över UVW mappning. Senast redigerad av Mawkish den 2014-06-29 klockan 14:01. |
|
|
|
|