簡體   English   中英

在 2d 賽車經理游戲中模擬賽車

[英]Simulate racing in 2d racing manager game

我正在開發 2d 賽車經理游戲。 我在模擬賽車方面遇到問題。 我用所有汽車都會跟隨的賽車線創建賽道。 大彎道,車子行駛起來看起來很流暢,但小彎道,車子的移動不是自然的,移動的太快了。 汽車進入彎道時如何管理速度? 謝謝你

編輯:我在游戲中忽略了物理,沒有滑動或漂移

賽道上的每一點都有一個絕對的最高速度; 超過速度會導致汽車滑動或滾動的地方。 這個最大速度由許多因素決定 - 賽車線上該點的半徑,汽車有多少抓地力(輪胎有多好,汽車從擾流板,賽道表面有多少下壓力),有多少質量汽車有,汽車的質心在哪里。 如果您想要極其逼真的物理,那將非常復雜; 但是您可以使用非常簡單的代碼獲得“足夠好”的結果。

一旦你確定了絕對最大值。 賽車線上每個點的速度(針對每種類型的汽車); 考慮到汽車的剎車性能有多好,您需要“向后塗抹”。 為了理解我的意思,假設你有一條很長的直道,然后是一個非常緊(90 度)的右轉; 汽車的最大“無限”。 直線速度和最大 50 公里/小時。 轉彎時最慢點的速度。 為了確保汽車可以及時減速,您可能會在轉彎前以 55 Km/ha 米的速度結束,在轉彎前 2 米處以 60 Km/h 的速度結束,等等。這給了你類似的practical_max_speed = min(absolute_max_speed, max_speed_to_slow_down_in_time); .

請注意,您實際上不需要確定實際最大值。 賽車線上每個點的速度。 選擇一些點(例如每米軌道)並在它們之間進行插值就足夠了(例如,如果汽車在之前的“50 Km/h”點和未來的“80 Km/h”點之間的 40%可以說汽車的最高速度是“0.4 * 50 + (1 - 0.4)*80 = 68 Km/h”。

當然,所有這些都可以在比賽開始前預先確定(對於每條賽道,對於每種類型的汽車)(如果你所有的車都在相同)。

問題是有時汽車會偏離賽道(例如超車,因為它們出現機械故障,因為它們正在進站,因為賽道上有危險,因為它們剛剛離開起跑線等) . 為此,您可以動態生成新路徑並執行確定實際最大值所需的所有計算。 沿着新路徑加速。 或者(如果你不太關心完美的物理特性,只想要一款有趣的游戲),你可以通過預先定義的替代路徑(例如,汽車可以超車的 3 個特定彎道)來作弊,或者通過假設實際最大值速度是“賽車線上的實際最大速度-與賽車線的距離*某事”,或者作弊更多(假設汽車不在賽車線上)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM