『壹』 如何製作簡單的射擊類(比CS還要簡單的)游戲
射擊類游戲(一)
第二部分開始類的編寫:
1、首先打開Flash CS4 (CS3、CS4或CS5沒什麼大的區別)新建項目,按確定。打開項目面板。圖:新建項目
2、點擊右邊的第一個三角按鈕(項目),在下拉菜單中選"新建項目"。在彈出新建項目面板項目名稱:填入項目名稱。在根文件夾:項中點擊右邊的瀏覽按鈕,瀏覽到准備存放項目的目錄,按確定。在ActionScript版本:選ActionScript 3.0 。單擊"創建項目"按鈕,這樣項目就建好了。圖:項目面板
3、把AirRaid.fla文件復制到項目文件夾下(省去製作界面)。點擊下面的"創建類"圖標,在彈出的創建類面板類:的文本框中填入文件名:AirRaid 單擊創建類按鈕。這樣類就創建好了並為我們寫好了類的框架,我們可以在框架中添加我們的代碼了。圖:創建類
圖:填入類名
圖:類的框架
4、編寫AirRaid.as類
AirRaid.as類:文檔類 AirRaid類是游戲的控制器,綁定AirRaid.fla 。負責生成界面上的飛機、火炮、子彈。顯示得分,子彈的剩餘數量。注冊了鍵盤按下,釋放偵聽器,接收用戶的鍵盤操作。注冊了進入幀事件偵聽器,進行碰撞檢測。定義一個飛機計時器,隨機生成飛機。檢測剩餘子彈的數目,當子彈數為零時也就是主角死亡了,移除界面上的飛機,火炮,跳轉到重玩按鈕。
package {
public class AirRaid extends MovieClip {
private var aagun:AAGun;//火炮
private var airplanes:Array;//飛機數組
private var bullets:Array;//子彈數組
public var leftArrow, rightArrow:Boolean;
private var nextPlane:Timer;//不定時生成飛機的計時器
private var shotsLeft:int;//得分文本
private var shotsHit:int;//子彈數文本
// 初始化得分數和子彈數
// 生成炮加入到舞台上
// 生成飛機、子彈數組
// 鍵盤按下、釋放事件偵聽器
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
// 進入幀事件偵聽器,檢測子彈擊中飛機的碰撞檢測。
addEventListener(Event.ENTER_FRAME,checkForHits);
// 生成下一架飛機
setNextPlane();
}
//不定時生成飛機
public function setNextPlane() {
//1000毫秒至2000毫秒之間生成一架飛機
nextPlane.start();
}
public function newPlane(event:TimerEvent) {
// 隨機的邊、速度和高度
// 生成飛機
var p:Airplane = new Airplane(side,speed,altitude);
// 碰撞檢測
}
}
if ((shotsLeft == 0) && (bullets.length == 0)) {
endGame();
}
}
// 按下鍵盤
public function keyDownFunction(event:KeyboardEvent) {
if (event.keyCode == 37) {
leftArrow = true;
} else if (event.keyCode == 39) {
rightArrow = true;
} else if (event.keyCode == 32) {
fireBullet();
}
}
// 釋放鍵盤
public function keyUpFunction(event:KeyboardEvent) {
if (event.keyCode == 37) {
leftArrow = false;
} else if (event.keyCode == 39) {
rightArrow = false;
}
}
// 生成新的子彈
public function fireBullet() {
if (shotsLeft <= 0) return;
var b:Bullet = new Bullet(aagun.x,aagun.y,-300);
addChild(b);
bullets.push(b);
shotsLeft--;
showGameScore();
}
public function showGameScore() {
showScore.text = String("得分: "+shotsHit);
showShots.text = String("剩餘子彈: "+shotsLeft);
}
// 從數組獲取飛機
public function removePlane(plane:Airplane) {
for(var i in airplanes) {
if (airplanes[i] == plane) {
airplanes.splice(i,1);
break;
}
}
}
// 獲取數組的一個子彈
public function removeBullet(bullet:Bullet) {
for(var i in bullets) {
if (bullets[i] == bullet) {
bullets.splice(i,1);
break;
}
}
}
// 游戲結束,移除界面上的東西。
public function endGame() {
// 移除飛機
for(var i:int=airplanes.length-1;i>=0;i--) {
airplanes[i].deletePlane();
}
airplanes = null;
aagun.deleteGun();
aagun = null;
// 移除偵聽器
stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction);
removeEventListener(Event.ENTER_FRAME,checkForHits);
nextPlane.stop();
nextPlane = null;
gotoAndStop("gameover");
}
}
}
5、編寫AAGun.as類
創建類的方法同第3步。首先選中庫中的AAGun元件,打開項目面板創建類。在"將類邦定到庫元件"前面打勾,點下"使用所選庫元件"的單選按鈕。圖:邦定庫元件
AAGun類:邦定庫中的炮元件,向左移動向右移動,檢測邊界,自動消毀。
package {
import flash.display.*;
import flash.events.*;
import flash.utils.getTimer;
public class AAGun extends MovieClip {
static const speed:Number = 150.0;
private var lastTime:int; // 控制移動的Timer
public function AAGun() {
// 槍的初始位置
this.x = 275;
this.y = 340;
//運動
addEventListener(Event.ENTER_FRAME,moveGun);
}
public function moveGun(event:Event) {
// 得到時差
var timePassed:int = getTimer() - lastTime;
lastTime += timePassed;
// 現在的位置
var newx = this.x;
// 移動到左邊
if (MovieClip(parent).leftArrow) {
newx -= speed*timePassed / 1000;
}
// 移動到右邊
if (MovieClip(parent).rightArrow) {
newx += speed*timePassed / 1000;
}
// 檢測邊界
if (newx < 10) newx = 10;
if (newx > 540) newx = 540;
// 更新位置
this.x = newx;
}
// 移除屏幕上的炮和事件
public function deleteGun() {
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME,moveGun);
}
}
}
新建文件Airplane.as
Airplane類:邦定庫中的飛機元件。隨機產生飛機,隨機的速度,產生5種飛機樣式,檢測是否飛出邊界,檢測被子彈擊中。自動毀滅和爆炸效果。
// 飛機的速度、方向
// 控制移動的Timer
//左右移動
//檢測邊界
// 檢測碰撞,子彈擊中飛機跳轉到幀標簽"explode"演示爆炸動畫。
// 移除舞台上的飛機和事件
新建文件Bullet.as
Bullet類:邦定庫中的子彈元件。控制子彈的飛行方向,檢測子彈是否飛出屏幕。
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.utils.getTimer;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class Bullet extends MovieClip {
private var dy:Number; // 子彈的速度、方向。
private var lastTime:int;
public function Bullet(x,y:Number, speed: Number) {
// 初始位置
this.x = x;
this.y = y;
// 得到速度
dy = speed;
// 動畫
lastTime = getTimer();
addEventListener(Event.ENTER_FRAME,moveBullet);
public function moveBullet(event:Event) {
// 得到時差
var timePassed:int = getTimer()-lastTime;
lastTime += timePassed;
// 子彈運動
this.y += dy*timePassed/1000;
// 子彈越過屏幕的頂端
if (this.y < 0) {
deleteBullet();
// 移除舞台的子彈和事件
public function deleteBullet() {
MovieClip(parent).removeBullet(this);
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME,moveBullet);
所有的類文件完成保存後,回到AirRaid.fla場景,按Ctrl+Enter組合鍵測試,看看你的成果吧!
簡單的學個Flash,很好學,還可以做動畫,很有用。大型游戲要學VB或者C++,編得游戲畫質不行。3DMAX是做特效的,你想做個游戲,不是一兩年搞得了的,有專門教這個的班。
『貳』 第一人稱射擊類游戲發展歷程
我隨便說說吧,不引用大篇幅文章了。
PC上公認的FPS鼻祖是id公司92年發行的WOLF3D(德軍總部3D),但那不是真正的3D引擎;
93年和94年id公司的DOOM,DOOM2是在全世界掀起FPS狂潮的里程碑:快速移動、血腥屠殺、繞迷宮找秘密,奠定了FPS游戲的發展方向;
96年1月,3D Realms公司發行《毀滅公爵3D》,以其獨到的黑色幽默內容贏得了廣大玩家的熱烈喜愛,然而後來號稱要發布的<永遠的毀滅公爵>,卻讓玩家等了10幾年,直到現在;
96年6月,id公司的《雷神之錘》(QUAKE)共享版發布,是史上第一款基於真正3D引擎的游戲,帶來前所未有的視覺感受;
97年12月,id公司的《雷神之錘2》發布,3D引擎再次升級,將FPS的發展帶入新的高度。特別說明一下,後來的《半條命》是Valve公司基於QUAKE1和QUAKE2引擎開發的,CS(反恐精英)是《半條命》的一個外掛模組(MOD),因為火爆至極,後來發行了獨立版本。
99年12月,《雷神之錘3》發布,成為FPS史上近乎完美的巔峰作品,直到今天,全世界很多玩家已然樂此不疲,各種新地圖,新玩法層出不窮,目前還有網頁版本的QUAKE3,名為QUAKE LIVE;基於QUAKE3引擎的FPS游戲也在2000年到2004年火爆不止,大家耳熟能詳的《重金屬女戰士》、《愛麗絲夢遊仙境》、《榮譽勛章聯合襲擊》系列,《重返德軍總部》,《使命召喚》系列,《命運戰士2》,《星戰絕地武士》系列,《星際迷航精英力量》系列等等FPS都是出自Q3引擎;
98年開始,EPIC GAMES公司開發的基於虛幻引擎的《虛幻》系列游戲發布,99發行《虛幻競技場》系列,目前虛幻競技場系列在PC平台已發行《虛幻競技場》(99年)、《虛幻競技場2003》(03年)、《虛幻競技場2004》(04年)、《虛幻競技場3》(07年),跨越了三代虛幻引擎,其他基於虛幻系列引擎的游戲從大約03年開始走向繁榮,至今佳作層出不窮。基於虛幻2代引擎的游戲主要有:《殺出重圍:隱形戰爭》、《細胞分裂》系列、《喋血街頭2》、《美國陸軍》、《越戰英豪》、《SWAT4》、《幽靈行動》、《彩虹六號3》、《星球大戰共和國突擊隊》、《兄弟連》、《魔域反攻》、《紅色管弦樂》、《戰爭之路》等等;基於虛幻3代引擎的游戲主要有:《戰爭機器1&2》、《彩虹六號:維加斯1&2》、《黑暗地帶51區》、《榮譽勛章空降兵》、《質量效應1&2》、《生化奇兵1&2》、《槍神》、《兄弟連:地獄高速》、《潘多拉傳奇》、《轉折點:自由的隕落》、《鏡之邊緣》、《前線:戰爭燃料》、《湯姆克蘭西戰爭終結》、《恐龍獵人》、《蝙蝠俠:阿甘瘋人院》、《X戰警:金剛狼》、《無主之地》、《美國陸軍3》等等,看你玩過多少哈。
2004年,id發布DOOM3,引擎技術的革新帶來了游戲里動態光影的畫面和逼真慎人音效,成為FPS史上又一個里程碑,但是基於DOOM3引擎的游戲不多,主要就是05年的《雷神之錘4》,06年的《掠食者》,07年的《雷神戰爭》以及09年的《德軍總部》。
2004同年,Valve發布了《半條命2》,採用Source引擎,基於該引擎的作品後來主要有《決勝之日:Source》,《反恐精英:Source》,《洞穴》、《軍團要塞2》,《奇諾沖突》,《生存之旅1&2》、《喋血街頭3》等等。
以上是主要FPS引擎的系列歷史,另外很多大獲成功FPS系列就不再詳細介紹了,比如Infinity Ward開發的《使命召喚》系列,克羅埃西亞Croteam小組基於自主開發引擎的《英雄薩姆》系列,EA發行的《戰地》和《榮譽勛章》系列,微軟發行的《光暈》系列,DreamCatcher的《斬妖除魔》系列,育碧的湯姆克蘭西系列,Novalogic的《三角洲》系列,採用Geo-Mod引擎的《紅色派系》系列,採用Gamebryo引擎的《上古卷軸4》和《輻射3》系列等等等等,都是FPS史上很優秀的作品,若要了解FPS游戲,首先應該了解這些。
『叄』 如何製作一個電腦單機游戲,射擊類的。
unity3D
學起來還算容易,無須大量代碼。材質,燈光,貼圖,骨骼,蒙皮,模型這些都要學,有免費版的下載,不坐商業發布的話沒事,商業發布好像要給引擎公司分錢的。。。。
『肆』 基於DirectX2D射擊游戲開發研究思路和方案
雷電。。。
『伍』 開發FPS游戲,需要哪些步驟詳細。
要做一個游戲不是幾個人就可以完成的,這需要大量的技術人員,很多游戲通關結束後會出版現職員權表,數不清的製作人員,而且通常要做好幾年,還不包括資金。一個游戲製作組分為幾個小組,有負責場景的,有負責人物設計的,有負責故事劇情的,有負責武器設計的,還有負責音樂製作的等等。但也有不那麼復雜的,利用現成的引擎,國外有很多人利用半條命2的引擎做了很多游戲,加上自己做的mod就成了自己的游戲,這個只需要一個人就可以完成了。
『陸』 游戲編程的射擊類游戲
這里所說的射擊類,並非是類似《VR戰警》的模擬射擊(槍戰),而是指純粹的飛機射擊,或者在敵方的槍林彈雨中生存下來,一般由玩家控制各種飛行物(主要是飛機)完成任務或過關的游戲。此類游戲分為兩種,一叫科幻飛行模擬游戲(SSG=Science-Simulation Game),非現實的,想像空間為內容,如《自由空間》、《星球大戰》系列等;另一種叫真實飛行模擬游戲(RSG=Real- Simulation Game),以現實世界為基礎,以真實性取勝,追求擬真,達到身臨其境的感覺。如《皇牌空戰》系列、《蘇-27》等等。另外,還有一些模擬其他的游戲也可歸為STG,比如模擬潛艇的《獵殺潛航》,模擬坦克的《野戰雄獅》等。STG也可以按照視角版面分為:縱版、橫版、主觀視角。
縱版:最為常見,如街機中的《雷電》、《鮫鮫鮫》、《空牙》等,都堪稱經典之作。
橫版:橫軸射擊,如《沙羅曼蛇》系列、《戰區88》
主觀視角:模擬,模擬戰機就屬此類。
一般指的是卷軸式射擊游戲,出現的相當的游戲類型。純2D STG的系統是在卷動的背景圖片上,玩家自機的活動塊與敵方子彈(和戰機)的活動塊,自機子彈的活動塊和敵戰機的碰撞計算。玩家在游戲中的目的就是獲得最高分數的記錄,或者是在敵方的槍林彈雨中成功存活。代表作品有彩京的《194X》系列,CAVE的《首領蜂》系列,IREM的《雷電》系列。偽3D的作品有《R-TYPE》系列,《雷霆戰機》系列。
『柒』 怎麼製作射擊游戲
你是要做Flash小游戲還是什麼?Flash的話可以去網上找找教程,應該不是很難。
如果你是要做那種單機游戲似的FPS射擊游戲的話,你一個人就很困難了。
『捌』 怎樣製作單機版射擊類游戲
射擊類游戲一直是Flash游戲製作中的一個熱點,大多數Flash射擊游戲都是都是縱版的,也就是游戲背景的前進方向是垂直的,這樣的游戲已經司空見慣了。所以這次我們來製作一個橫版的射擊游戲,游戲背景和飛機的運動方向都是水平的。(本例的源文件下載請點擊這里)
游戲運行後的主界面如圖1所示:
圖1
游戲說明:
此游戲玩家是以第一視角的模式來進行的,所謂第一視角就是游戲的界面相當於玩家的雙眼,通過這樣的形式,可以使游戲達到一種非常逼真的效果,彷彿您已經置身於激烈的游戲之中了。游戲中玩家可以使用滑鼠控制屏幕中的瞄準鏡,瞄準並射擊從左邊隨機出現的敵機,飛機會以各種路線在空中飛行以避開你的射擊,如果敵機被射中後,就會從空中跌落下來,相應的玩家會得一分,在游戲規定的100秒內,盡量擊落更多的敵機。
製作步驟:
一:游戲中相應元件的製作
1.既然是空戰游戲,自然少不了飛機,所以首先來製作游戲中的敵機。在影片中新建一個Graphic元件,,命名為gPlane,進入元件的編輯狀態後,可以從外部導入一張飛機的圖片,然後將其分離,稍稍加工一下即可。或者使用Flash提供的強大的繪圖工具自己繪制一架飛機,如圖2所示:
圖2
有了飛機,還需要一個飛行員飛機才可以工作,所以再建一個Graphic元件,命名為gMan,進入元件編輯狀態後,使用橢圓繪圖工具繪制一個簡單的人頭即可,如圖3所示:
圖3
接下來就需要將飛機和飛行員組合到一起了,因為游戲中需要使用Action動作腳本對飛機進行控制,所以需要將最終的組合體製作成Movie clip元件,所以再新建一個Movie clip元件,進入元件的編輯狀態後,將元件gMan和Gplane分別拖到編輯區,使用滑鼠調整其相對位置,如圖4所示:
圖4
『玖』 第一視角射擊類游戲開發
現代社會開發游戲都市直接使用引擎的。何況你們想用dx做個完整的游戲估計要回嗆死你們。更何況是opengl,反正答我個人直接用opengl直接寫個像蛇的東西都不行。如果要求快速,真心不推薦opengl,太底層了,寫個正方體都要搞半天。
這個引擎是有的。而且很多,開源的tv3d比較好,
還有就是udk,cryengine3,unity3d都可以做的。