1 FL 教程Flash 關于游戲設計研究之在場景中移動 周四 3月 03, 2011 7:06 pm
Admin
Admin
場景是游戲中的一個重要元素,非凡對于RPG游戲來說場景的數量就更多了,所以現在我為一些想做游戲的入門新手來講解一下,游戲中的角色是如何在場景中實現移動的。今天我們要講的是以游戲角色為中心的場景移動方式。
以游戲角色為中心的場景移動方式就是:除了到達場景的盡頭之外,游戲角色始終在場景的中心的移動方式。現在我們也可分開來考慮問題了,我們可以
分為:在未達到場景盡頭和已到達場景盡頭兩種情況。在未到達場景盡頭時,游戲角色是在場景的中心位置的,已到達場景盡頭時是游戲的角色逐漸向盡頭靠攏的動
作。還要進行說明的一點是,在很多種情況中都是由視覺產生的錯覺,很多人以為是角色的移動造成場景的移動,所以把注重力集中在角色中,其實在編寫在場景移
動的注重力應該集中在場景上,當按下方向鍵時場景就開始移動,使我們誤認為是角色在移動了。所以我們要分析出最本質的東西才能讓我們事半功倍,好接下來我
們就開始說說如何設計吧...
首先我們找來一幅圖片并將它導入到Flash中。然后新建一個MC,把圖片拖進去并讓它和原點對齊,此步的目的是為了我們日后編程的方便而做
的。而這一個MC就是我們的場景了。接著我們把這個MC拖到主場景并取名為map。接著我們再新建一個MC,這個用來表示游戲中的角色,我們隨便畫一個圓
點給它。我們把這個MC也拖進場景取名為CurPoint。接下來我們開始編寫腳本,點擊主場景第一幀,寫下如下代碼:
//以角色為中心的場景移動
//角色移動的速度
var speed:Number = 3;
this.onEnterFrame = function() {
if (Key.isDown(Key.UP)) {
if (map._y>=0) {
//達到上邊界
map._y = 0;
curPoint._y -= speed;
} else {
//未到達上邊界,地圖下移
if (curPoint._y>=Stage.height/2) {
curPoint._y -= speed;
} else {
map._y = speed;
}
}
}
if (Key.isDown(Key.DOWN)) {
if (map._y<=-(map._height-Stage.height)) {
//達到下邊界
map._y = -(map._height-Stage.height);
curPoint._y = speed;
} else {
//未到達下邊界,地圖上移
if (curPoint._y<=Stage.height/2) {
curPoint._y = speed;
} else {
map._y -= speed;
}
}
}
if (Key.isDown(Key.LEFT)) {
if (map._x>=0) {
map._x = 0;
curPoint._x -= speed;
} else {
if (curPoint._x>=Stage.width/2) {
curPoint._x -= speed;
} else {
map._x = speed;
}
}
}
if (Key.isDown(Key.RIGHT)) {
if (map._x<=-(map._width-Stage.width)) {
map._x = -(map._width-Stage.width);
curPoint._x = speed;
} else {
if (curPoint._x<=Stage.width/2) {
curPoint._x = speed;
} else {
map._x -= speed;
}
}
}
};]
以游戲角色為中心的場景移動方式就是:除了到達場景的盡頭之外,游戲角色始終在場景的中心的移動方式。現在我們也可分開來考慮問題了,我們可以
分為:在未達到場景盡頭和已到達場景盡頭兩種情況。在未到達場景盡頭時,游戲角色是在場景的中心位置的,已到達場景盡頭時是游戲的角色逐漸向盡頭靠攏的動
作。還要進行說明的一點是,在很多種情況中都是由視覺產生的錯覺,很多人以為是角色的移動造成場景的移動,所以把注重力集中在角色中,其實在編寫在場景移
動的注重力應該集中在場景上,當按下方向鍵時場景就開始移動,使我們誤認為是角色在移動了。所以我們要分析出最本質的東西才能讓我們事半功倍,好接下來我
們就開始說說如何設計吧...
首先我們找來一幅圖片并將它導入到Flash中。然后新建一個MC,把圖片拖進去并讓它和原點對齊,此步的目的是為了我們日后編程的方便而做
的。而這一個MC就是我們的場景了。接著我們把這個MC拖到主場景并取名為map。接著我們再新建一個MC,這個用來表示游戲中的角色,我們隨便畫一個圓
點給它。我們把這個MC也拖進場景取名為CurPoint。接下來我們開始編寫腳本,點擊主場景第一幀,寫下如下代碼:
//以角色為中心的場景移動
//角色移動的速度
var speed:Number = 3;
this.onEnterFrame = function() {
if (Key.isDown(Key.UP)) {
if (map._y>=0) {
//達到上邊界
map._y = 0;
curPoint._y -= speed;
} else {
//未到達上邊界,地圖下移
if (curPoint._y>=Stage.height/2) {
curPoint._y -= speed;
} else {
map._y = speed;
}
}
}
if (Key.isDown(Key.DOWN)) {
if (map._y<=-(map._height-Stage.height)) {
//達到下邊界
map._y = -(map._height-Stage.height);
curPoint._y = speed;
} else {
//未到達下邊界,地圖上移
if (curPoint._y<=Stage.height/2) {
curPoint._y = speed;
} else {
map._y -= speed;
}
}
}
if (Key.isDown(Key.LEFT)) {
if (map._x>=0) {
map._x = 0;
curPoint._x -= speed;
} else {
if (curPoint._x>=Stage.width/2) {
curPoint._x -= speed;
} else {
map._x = speed;
}
}
}
if (Key.isDown(Key.RIGHT)) {
if (map._x<=-(map._width-Stage.width)) {
map._x = -(map._width-Stage.width);
curPoint._x = speed;
} else {
if (curPoint._x<=Stage.width/2) {
curPoint._x = speed;
} else {
map._x -= speed;
}
}
}
};]