程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 想挑戰嗎?通過XNA Game Studio Express充分發揮您的想象力(6)

想挑戰嗎?通過XNA Game Studio Express充分發揮您的想象力(6)

編輯:關於C語言

Texture2D 對象。

我們的投影坐標減去精靈寬度和高度的一半;這將使精靈在飛船上正好居中。

紋理的源大小。

增加精靈現有顏色的顏色。(我們將它構造為 Vector4,其中三個分量表示紅色、綠色和藍色,第四 個分量表示 alpha 或不透明性。這些特定值定義了部分透明的綠色;透明性使我們可以看到防護罩下面 的飛船,而不是遮蔽它。)

比例因子。(在此處我們機智地采用剩余防護時間的余弦,這使防護罩的大小隨時間而波動,只是為 了突出圖形效果。)

設置為 None 的精靈效果標志,但是它可用於水平或垂直翻轉精靈。

屏幕深度。如果值為零,則在所有其他對象之上繪制精靈,因此保證在飛船的頂部而不是其下面進行 呈現。

激發防護罩!

此時,玩家可以建造並顯示防護罩,並在相應的時間段後使防護罩消失。不幸的是,防護罩尚未提供 任何保護。若要獲得該功能,請打開 SpacewarScreen.cs 並添加兩個簡單的代碼塊(為每個玩家添加一 個代碼塊)。轉到 SpacewarScreen.cs 中的第 94 行,並將以下代碼添加到 HitPlayer2 的開頭:

if (ship2.ShIEld)
{
   // Make a bouncy sound rather than an explosion.
   Sound.PlayCue( Sounds.WeaponPickup );
   return;
}
並將以下內容添加到第 122 行(在 HitPlayer1 的開頭):if (ship1.ShIEld)
{
   // Make a bouncy sound rather than an
   // explosion.
   Sound.PlayCue( Sounds.WeaponPickup );
   return;
}

如前所述,SpacewarScreen.cs 表示 Spacewar 游戲循環的更新邏輯。許多游戲(包括 Spacewar)對 游戲的各種狀態使用單獨的游戲邏輯循環,如主菜單、武器選擇和實際游戲本身。隨著玩家在游戲中的進 展,在各個狀態之間移交控制。在 Spacewar 中,這些狀態稱為屏幕,由 Screen 類表示。 SpacewarScreen 派生自 Screen,處理實際的游戲進程狀態,在游戲中兩個玩家控制其飛船並進行戰斗。

在 SpacewarScreen 類中,Update 循環管理游戲對象,如在屏幕上漂浮的飛船、武器和小行星。當這 些對象與飛船發生碰撞時,邏輯調用 HitPlayer1 或 HitPlayer2(它們計算對飛船造成的損壞)。

此代碼修改 HitPlayer1 和 HitPlayer2 中的游戲邏輯,以便在飛船受到損壞時,先檢查防護罩再處 理造成的損壞。如果已建立防護罩,則播放變形聲音,而在執行進一步操作之前損壞功能關閉。

整個過程就是這樣的。使用 F5 進行編譯和運行,體驗一下吧!在主菜單中,選擇 Evolved 游戲模式 。啟動游戲後,按 X 按鈕或鍵盤上的等效鍵(F 對於玩家 1,Page Up 對於玩家 2)建立防護罩,如圖 3 所示。兩個玩家在每一回合中都只能使用一次防護罩,但是防護罩是非常堅固的:它可以吸收各種類型 的子彈,小行星撞擊不會造成任何損壞,即使太陽也不能傷害您!

圖 3防護罩已激發!

帶著防護罩在障礙物周圍進行旋轉,但請確保在防護罩用完時(它只能持續 5 秒)您自己不要離太陽 太近!

在此引發的一些想法:使用某個向量數學,可以修改防護罩將子彈彈離而不是將其吸收。這可能意味 著,在對手的子彈反彈回自己時,將是多麼慘痛的突襲!或者修改損壞系統,使防護船在打擊對手時使其 損壞威力加倍!損壞速度驚人!

編寫游戲的快樂體現在實驗中。通過 XNA Game Studio Express,可以很容易地使用各種殺手锏、真 正創造您自己的游戲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved