freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

國內(nèi)賽車發(fā)展現(xiàn)狀和趨勢畢業(yè)論文(參考版)

2025-07-01 00:41本頁面
  

【正文】 如果StorageDevice可用,要將它傳遞到SaveGame方法,這個方法一會兒后就會定義。 } BeginShowStorageDeviceSelector的輸出結(jié)果作為這個方法的參數(shù),如果將結(jié)果傳遞到Guide. EndShowStorageDeviceSelector方法,就可以獲取data storage。當對話框顯示在屏幕上時程序仍在運行,一旦用戶做出選擇并關(guān)閉對話框,作為第一個參數(shù)的FindStorageDevice方法就會被調(diào)用,這意味著開發(fā)者應(yīng)事先定義這個方法,否則編譯器會報錯:private void FindStorageDevice(IAsyncResult result){ StorageDevice storageDevice = (result)。 if (!) if (()) (FindStorageDevice, null)。程序并不會在此終止,但會暫停程序直到關(guān)閉對話框。 (new GamerServicesComponent(this))。Guide需要將GamerServicesComponent添加到游戲中,所以要將下列代碼添加到Game1構(gòu)造函數(shù)中:public Game1(){ graphics = new GraphicsDeviceManager(this)。 在這個過程中會打開XNA Guide并終止程序直到用戶關(guān)閉Guide。在將數(shù)據(jù)保存到磁盤之前,需要一個可用的位置進行寫入。唯一的問題是找到在PC平臺能保存的位置,要解決這個問題,可用StorageDevice,它必須首先被建立。首先,這意味著創(chuàng)建/打開/刪除文件是很容易的。l 剎車漂移:相對簡單些,只要在賽車剎車后保持汽車原有行駛方向前進一段位移就可以了,但此過程中要必須保持車輪不進行轉(zhuǎn)動。車輪的空間坐標信息如圖313所示:圖313 車輪坐標系常見的漂移包括拐彎漂移和剎車漂移。高水平的玩家甚至可以在彎道較多的路段全程漂移,達到極限過關(guān)速度。作為一款賽車游戲,漂移給游戲者提供了更多的樂趣。當發(fā)動機停止后,就以慣性保存的值去操作賽車。當汽車停止發(fā)動機后,汽車仍然具有一定的速度向前行駛,這便是慣性。/// Max speed of our car is 275 mph./// While we use mph for the display, we calculate internally with/// meters per sec since meter is the unit we use for everthing in the game.public const float MaxSpeed = * MphToMeterPerSec。//。下面是前三個常數(shù)。當駕駛上山時汽車可能會低于道路,或因為一些精度誤差,但z值都會被修正使車重回到公路上。 } // if (distFromGround) += distFromGround。 } // if (distFromGround) if (distFromGround minGravity) { distFromGround = minGravity。 if (distFromGround maxGravity) { distFromGround = maxGravity。 float maxGravity = Gravity * moveFactor。 isCarOnGround = distFromGround 。碰撞檢測將在本章后面討論,但可以在TestCarPhysicsOnPlane單元測試中添加重力并調(diào)整它。如果汽車速度足夠快,汽車可能會脫離地面飛起來一段時間,直到重力加速度再次把車拉回地面。玩家也可以通過踩剎車來實現(xiàn)減速。賽車在三維賽道上的受力情況如圖312所示:圖312 賽車受力圖由受力圖分析可得:①當玩家加油門時,汽車的發(fā)動機推進汽車向前行駛??梢酝ㄟ^設(shè)置顏色、霧開始、霧結(jié)束的距離范圍來設(shè)置霧效。l 霧:利用離子系統(tǒng)可以設(shè)置霧的一些參數(shù),如FogColor、FogStart、FogEnd。其中粒子在下雪模擬中使用一個白色的點來表示。其中粒子在下雨模擬中使用一條透明直線表示,在運行過程中對各粒子的速度和運動方向進行控制,合理調(diào)整參數(shù)即可達到效果。 因為3D effect是通過控制左右聲道的音量實現(xiàn)的,所以聲音中的任何立體聲信息會丟失:首先將聲音轉(zhuǎn)換為單聲道,然后對應(yīng)物體的3D位置設(shè)置左右聲道的音量。當相機和音源更新后,需要調(diào)用UpdateSoundPosition方法告知cue1對象最后的位置。 }這個方法的前半部分檢查用戶輸入并將輸入傳遞到相機。 ()。 UpdateSoundPosition(cue1, modelPos, , , )。 Matrix rotMatrix = (time)。 float time = (float)。 KeyboardState keyState = ()。 if ( == ) ()。 ()。 soundBank = new SoundBank(audioEngine, Content/Audio/)。 audioEngine = new AudioEngine(Content/Audio/)。需要在第一次調(diào)用Play方法前調(diào)用Apply3D方法。對listener(相機)來說,還要設(shè)置Forward和Up向量,因為當相機旋轉(zhuǎn)了180度后,左右聲道會互換。 (listener, emitter)。 = camForward。 AudioListener listener = new AudioListener()。下面的方法創(chuàng)建了兩個對象:private void UpdateSoundPosition(Cue cue, Vector3 sourcePos, Vector3 camPos, Vector3 camForward, Vector3 camUp){ AudioEmitter emitter = new AudioEmitter()。如果要設(shè)置聲源的3D位置,首先必須為這個音源設(shè)置一個AudioEmitter對象和為相機設(shè)置一個AudioListener對象。對每個聲音,開發(fā)者必須設(shè)置相機的3D位置和使用聲音Cue對象的Apply3D方法設(shè)置聲源的位置。即使碰撞不在相機的視野中,玩家也可以知道在他的右側(cè)發(fā)生了什么事。要讓3D游戲更真實,讓每個聲音都位于3D空間的某個位置。同時這種變色效果也為游戲增加的趣味和真實感。l 樹葉、草地變黃:為樹葉、草地配置多套紋理貼圖,而且貼圖的顏色是從綠色到黃色的漸變顏色。l 場景變暗:是通過調(diào)節(jié)場景光線強度來實現(xiàn)的。三維光暈數(shù)學模型如圖310所示:圖310 三維光暈數(shù)學模型游戲前可以選擇不同的車型、汽油類型和尾氣處理裝置類型。而在游戲中開發(fā)者只需要照著真實的樣子將這個現(xiàn)象合理地表示出來就可以了。碰撞球模型如圖39所示:圖39 碰撞球數(shù)學模型使用二維模擬三維的方法生成光暈,即在太陽位置和鏡頭位置之間的連線上隨機取35個點,然后再各個點的位置插入一個與鏡頭平行的平面,使用光暈圖片貼圖即可。用一個盡可能大的標準球?qū)①愜囓嚿肀ё?,將汽車與汽車之間的碰撞轉(zhuǎn)化為球體與球體之間的碰撞。賽車與路面碰撞檢測的數(shù)學模型如圖38所示。將此路面高度值與汽車車頭Y值比較,便可完成碰撞檢測。其次,根據(jù)P1和P2的坐標,計算得出經(jīng)過PP2兩點的空間直線的方程Fun1。取前兩個輪子中間坐標為front,后面兩個輪子中間坐標為back。 blPosition += cDirection * 10f。 } else { = 。 } } //back wheels if (WheelNum == 2 || WheelNum == 3) { if ((cosval) ) { velocity *= 。 } } else { velocity = 0f。 if (forward) { = 。 int WheelNum = ((BCCollisionDetection)sender).WheelNum。 blPosition += cDirection * 10f。 } else { = 。 } } if (WheelNum == 2 || WheelNum == 3) { if ((cosval) ) { velocity *= 。 } } else { velocity = 0f。 if (forward) { = 。 int WheelNum = ((BCCollisionDetection)sender).WheelNum。分叉路面如圖37所示:圖37 分叉路面示意圖對于分叉路面,也是相同的方法,只不過比起單賽道來要多檢測一個賽道的碰撞。當與公路邊界發(fā)生碰撞后,計算碰撞時賽車與公路的夾角,根據(jù)反射的原理,讓賽車以相同的夾角向相反方向行駛,即完成碰撞處理。最后檢測賽車坐標是否位于兩直線方程之間。首先通過公路邊界數(shù)據(jù),建立公路邊界的兩條空間直線的方程。這種方法雖不具有通用性,但對本游戲來說非常方便,易于實現(xiàn),利于項目的整體開發(fā)進度。美工在場景模型中可以很方便地獲取公路邊界,然后導出邊界數(shù)據(jù)中間文件,供給程序自動分析完成公路邊界數(shù)據(jù)采集。但在本游戲中并沒有采用這些方法,原因是這些邊界碰撞的方法較為復(fù)雜,并且需要大量的場景數(shù)據(jù)作支撐,雖說效果較好,但前期準備工作較多,不利于整個項目的開發(fā)。}邊界碰撞是游戲中的一項重要功能,是游戲樂趣的硬件基礎(chǔ)。 position += velocity * elapsed。 Vector3 acceleration = force / Mass。 Vector3 stretch = position desiredPosition。s animation is controlled by a simple// physical spring attached to the camera and anchored to the desired position.public void Update(GameTime gameTime){ UpdateWorldPositions()。來實現(xiàn)攝像機位置的變化過程。②攝像機矩陣取上一狀態(tài)的車子矩陣,需要過buffersize幀后,才會得到車子最新狀態(tài),造成時間差。賽車游戲攝像機綁定需要有一個緩沖,因為車子轉(zhuǎn)彎的時候,視覺并不是實時地轉(zhuǎn)彎,會有延遲,加一個緩沖,會使效果更逼真,這就是彈力(彈簧)效果。而后者便在每一幀計算出攝像機的目標位置:(carPos + carUp * CarHeight + * chaseCamDistance * chaseCamDistance / (viewDistance + ) * )。}。要使攝像機開始抖動,只需要調(diào)用WobbelCamera靜態(tài)函數(shù):public static void WobbelCamera ( float wobbelFactor ){ cameraWobbelTimeoutMs = (int) (MaxCameraWobbelTimeoutMs)。}這一段代碼的關(guān)鍵在與計算lastCameraWobble。 // Interpolate, make wobbleing more smoooth than in Rocket Commander lastCameraWobble = lastCameraWobble * + (effectStrength, +effectStrength ) *。amp。 if (cameraWobbelTimeoutMs 0) cameraWobbelTimeou
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1