風是泰拉瑞亞中的一種機制,會影響各種物體的運動以及風和沙塵暴的發生。
風速的範圍是在 0 到 60 mph 之間。風可以從東面或西面吹來。諸如天氣收音機之類的信息配飾所顯示的風向指的是風從哪邊從來,而非向哪邊吹去(因此,例如「25 mph 西風」意味著風以 25 mph 風速從西邊吹來)。
風主要影響不會影響遊戲玩法事物,比如雲的移動速度、暴雪和沙塵暴的背景效果、和水面與樹的動畫。不過,它偶爾也會對遊戲玩法有影響,比如它對爆炸泡泡的影響和對遭受強風折磨的玩家的影響。宇宙車鑰匙所召喚的UFO坐騎似乎也會稍微被風所推動,但很難察覺到,除非長時間對著某個角落發射會反彈的武器。
風速為 20 mph 或更高時會發生大風天事件,在風速降低到 16 mph 以下時結束。
天氣收音機、探魚器、個人數字助手、和手機全都能在屏幕右上角列出風速。
功能 [ | ]
代碼中有兩個控制風速的核心值:windSpeedCurrent
和 windSpeedTarget
,二者均每嘀嗒[1]更新一次。windSpeedCurrent 的變化速率由以下公式確定:
speed = |windSpeedTarget/50 * (1 + 降雨强度 * 5/9) - windSpeedCurrent/50| * 0.0015;
其中 windSpeedTarget 和 windSpeedCurrent 值的單位為遊戲所使用的 mph。遊戲將兩個值都存儲為浮點值,當 < 0 時是東風,> 0 時是西風。
世界在創建時,會帶有不超過 20 mph 的風,並且會設置變量 windCounter
來防止風速在接下來的 15 - 45 秒內有變化。這段時間結束後,會有一些隨機機率會在一定量以內加強或減弱風,每 15 - 45 秒就會這麼循環一次(「陣風」)。[2]
機率 | 目標風速變化 |
---|---|
25% | -1.25 mph 到 1.25 mph |
37.5% | -2.5 mph 到 2.5 mph |
37.5% | -5 mph 到 5 mph |
有第二個計數器(extremeWindCounter
),它在每一次陣風出現時都會減一。當它到達零時,會引發「極端陣風」。在世界生成過程中和發生極端陣風時都會重置這個計數器。
機率 | 發生 |
---|---|
21.66% | 目標風速設置為 0,接下來 2 - 8 分鐘內不會出現陣風。 |
21.66% | 目標風速會增加 -10 mph 到 10 mph |
36.83% | 目標風速會增加 -20 mph 到 20 mph |
19.85% | 目標風速會增加 -40 mph 到 40 mph |
當極端陣風出現時,目標風速將決定經過多少次陣風后會發生下一次極端陣風。
目標風速 | 出現極端陣風所需的陣風數量 |
---|---|
0 - 15 mph | 10 - 30 次陣風 |
> 15 mph | 15 - 40 次陣風 |
> 25 mph | 20 - 50 次陣風 |
> 35 mph | 25 - 60 次陣風 |
最後,如果某次陣風讓風向改變,則目標風速有 66% 機率會翻轉回到原來的方向。 完成所有這些步驟之後,目標風速會被限制為不超過 40 mph。
影響[ | ]
風會有以下影響:
對象 | 效果 |
---|---|
大風天 | 當風速在任意方向上為 20 mph 或更高時會發生此事件。 |
沙塵暴 | 當風速在任意方向上為 30 mph 或更高時有機率發生。 |
大風氣球怪 | 影響移動方向和生成位置。生成速度會隨著風速提高而提高。 |
憤怒蒲公英 | 影響所發射射彈的方向、動畫和運動,以及敵怪自身的動畫。敵怪只能在風所吹的方向上發射。生成速度會隨著風速提高而提高。 |
瓢蟲 | 影響移動方向;只在風在任意方向上超過 20 mph 時才會生成。 |
[[靈霧|]] | 影響移動方向。 |
釋放鴿子 | 影響移動方向。 |
風箏 | 不在牆後面時會推動之。 |
水 | 影響動畫,當水波質量啟用時還會影響扭曲。 |
八音盒 | 影響音符的飄動方向。 |
呆萌氣球機 | 影響氣球移動。 |
降水(雨、暴雪、沙塵暴、等等) | 影響微粒運動。 |
雲 | 影響飄動方向。 |
影響飄動方向。 | |
爆炸泡泡 | 影響飄動方向。 |
憤怒翻滾怪 | 推動。 |
對背景氣 | 影響氣球飄動方向。 |
有[[強風|]]減益的玩家 | 推動。 |
極的雪 | 影響飄動方向。 |
飛 | 帶走。 |
耍蛇者長笛 | 影響使用長笛所產生的音符。 |
環境實體 | 影響背景中斷線風箏、蝴蝶群、天馬、妖精群、禿鷹、鳥群、海鷗群、腹足怪群、氣球史萊姆群、地獄蝙蝠群、蝙蝠群、飛龍、熱氣球和飛艇的移動。 |
煙囪 | 推動其所冒出的煙霧微粒。 |
螢火蟲 / 螢光蟲 | 當風在任意方向上超過 20 mph 時不會生成。 |
蝴蝶 | 當風在任意方向上超過 20 mph 時不會自然生成或通過搖樹生成。 |
當風在任意方向上超過 10 mph 時不會自然生成。 | |
女巫掃帚 | 會推動把手頂部的小燈。 |
和生命樹樹葉 | 隨著風速增加葉子也會更頻繁地掉落。掉落的葉子也會受風所影響。 |
reetop | 長著樹葉的樹梢會有動畫。 |
蔓藤 | 推動。 |
籠夜時的背景燈 | 影響飄動方向。 |
釋放燈籠 | 影響飄動方向。 |
風的氛圍曲子 | 影響音量。僅當風速大於 20 mph 時才會播放。 |
瀑布 | 影響動畫。 |
風車 | 影響旋轉動畫。 |
三角旗 | 影響動畫速度。 |
風向標 | 影響動畫。 |
家具[ | ]
一些家具,當其處於地表上,位於以下任意牆前面、或者其後面根本沒有牆時,會受風影響。
滿足以上條件時,以下家具會受風影響。
強風 [ | ]
- 強風默認情況下每秒會推動玩家
mph * 0.0012
像素。如果風速 > 25mph,此數值還會增加 37%。如果玩家正在墜落或跳躍,此數值會提高 50%。最後,如果玩家向左或向右移動,此數值會降低 20%,並且最後會被限制為不超過 0.072 像素/幀。 - 以足夠的速度迎風奔跑會讓玩家出現類似於穿著赫爾墨斯靴奔跑時的那種效果的微粒。
- 騎著坐騎在固定高度上向左或向右移動時會抵消強風的影響。
備註[ | ]
- 當正好為 0 mph 時,遊戲會將其視為西風,但由於風速使用的是小數系統,此值通常只是接近但不會正好是 0。
- 在標題屏幕上,會初始化出一個最高 40 mph 的風速。但這並不會帶入生成的世界中,世界內會以最高 20 mph 的風速開始。
- 由於這些初始速度,世界有 1/400 機率生成時就處於大風天狀態。
- 在旅行模式中,如果玩家控制風速,那麼在燈籠夜期間風速會降到零。
- 只有目標風速會隨同世界存檔,加載這個世界時,當前風速會被設置為目標風速。這會使得玩家退出又重新進入世界後風速上會有輕微不同。
花絮[ | ]
在較低的風速時,每嘀嗒內葉子從樹上掉落的頻率較低(5 mph → 1/2000 機率、10 mph → 1/1000、15 mph → 1/450、……40 mph → 1/50)。雖然最大風速是 40mph,但卻有針對 55 mph 及更高風速情況的代碼,機率為每嘀嗒 1/10。
廢棄的射彈物理[ | ]
在遊戲代碼中,有一個布爾值 Main.windPhysics
可以開關一個特性:射彈會受風影響。因為它處于禁用狀態,因此目前遊戲中並沒有這樣的特性。以下是關於此特性效果的詳細描述。
值得注意的是,此特性會試圖在北極上禁用風的效果,但不清楚這是為了防止和現有代碼衝突還是為了徹底移除此特性。
當此特性被激活時,以下所有射彈,當其位於地表上且未卡債圖格中或在牆後時,都會受風影響。這僅當它們沿當前風向移動且其 x 速度低於 wind mph * 0.36
時才會發生。這會讓它們的 x 速度每嘀嗒改變 wind mph * 0.002
像素,或者說每秒 wind mph * 0.12
像素。
在這種情況下,射彈的 x 速度不能超過 16,但實際上永遠不會達到此限制,因為可能的最大風速,40 mph,只能將射彈吹到每嘀嗒 14.4 像素。
|
功能 [ | ]
遊戲在決定風速時會用到兩個基準值:「windSpeed」和「windSpeedSet」。windSpeedSet 這個值用來決定 windSpeed 應當逐漸變化成為的值,但在整個代碼中實際上交錯地使用兩個值來影響某些對象。遊戲採取以下步驟來決定確定風速:
- 如果 windSpeed 不等於 windSpeedSet,讓其接近 0.001
- 改變 windSpeedSpeed,變化幅度為 -.001 到 .001 (夜晚時是 -.002 到 .002)
- 將 windSpeedSpeed 限制到 -.002 到 .002 內
- 改變 windSpeedTemp,幅度為 windSpeedSpeed (如果下雨則為 windSpeedSpeed * 2)
- 將 windSpeedTemp 限制到
0.3 + 0.5 * (云覆盖率百分比 / 100)
內 - 將 windSpeedSet 的值設為 windSpeedTemp
- 循環
總的來說,這意味著夜間及下雨時風速會更強。然而,由於沙塵暴並不算做下雨,所以沙塵暴實際上並不會導致風速增加。同樣值得注意的是,天空中更多的雲意味著更高的風速,無論是否下雨。
參考[ | ]
- ↑ A tick is a time unit countable by the software. Most of Terraria's updating logic happens every tick. A tick has the length of 1/60th of a second, hence there are 60 ticks in a second and 3600 ticks in a minute.
- ↑ Information taken from the Desktop 1.4.0.5 source code, method
UpdateWeather()
inTerraria.Main.cs
. There may be inaccuracies, as the current Desktop version is 1.4.4.9.
zh:風