Flash製作簡單塔防遊戲(一)
首先讓我們準備一張簡陋的地圖
物體要從A點移動到B點,速率為speed(每幀移動的長度)
public class Dot {
//橫座標
public var x:int;
//縱座標
public var y:int;
// constructor code
x = xPoz;
y = yPoz;
}
}
回到game.fla,把我們畫好的地圖匯入到舞臺,對齊到(0,0),新建一個圖層,在上面直接寫下以下的程式碼,
import flash.events.Event;
//路徑資料,陣列中的每個元素代表一個點,順序是從起點到終點
var pathArr:Array = [new Dot(850, 27),
new Dot(800, 27),
new Dot(627, 20),
new Dot(444, 22),
new Dot(391, 30),
new Dot(150, 31),
new Dot(90, 50),
new Dot(73, 133),
new Dot(71, 193),
new Dot(80, 220),
new Dot(110, 260),
new Dot(162, 302),
new Dot(228, 324),
new Dot(282, 320),
new Dot(540, 233),
new Dot(590, 227),
new Dot(630, 250),
new Dot(646, 293),
new Dot(651, 543),
new Dot(643, 600)];
//建立小怪物,新增到舞臺,並設定初始位置
var monster:Monster = new Monster();
addChild(monster);
monster.x = Dot(pathArr[0]).x;
monster.y = Dot(pathArr[0]).y;
//小怪的運動速率
var speed:int = 6;
//分解到兩個方向,水平vx和豎直vy
var vx:Number;
var vy:Number;
//連點之間的距離除以速率的值
var stepNums:int;
//迴圈用變數
var stepCount:int = 0;
//當前是否經過一個關鍵點(陣列中指定的點 )
var passedDot:Boolean = true;
//當前對應的關鍵點
var currentIndex:int = 0;
//關鍵點數量
var num:int = pathArr.length;
this.addEventListener(Event.ENTER_FRAME, onEnterFm);
function onEnterFm(e:Event):void
{
//如果正好通過一個關鍵點
if(passedDot)
{
//如果還沒有到最後一個關鍵路徑點
if(currentIndex < num - 1)
{
//兩相鄰關鍵點Y座標差值
var deltaY:Number = Dot(pathArr[currentIndex+1]).y - Dot(pathArr[currentIndex]).y;
//兩相鄰關鍵點X座標差值
var deltaX:Number = Dot(pathArr[currentIndex+1]).x - Dot(pathArr[currentIndex]).x;
//計算出兩相鄰關鍵點連線的角度
var angle:Number = Math.atan2(deltaY, deltaX);
//調整小怪的角度
monster.rotation = angle * (180/Math.PI);
//計算出在這兩個關鍵點之間每幀在兩個方向上的移動距離
vx = speed*Math.cos(angle);
vy = speed*Math.sin(angle);
////計算出兩相鄰關鍵點連線的長度(勾股定理)
var dis:Number = Math.sqrt(deltaY*deltaY+deltaX*deltaX);
//距離除以速率,得到的值表示在這個值表示的幀數內不用再計算vx和vy
stepNums = int(dis/speed);
}
//
passedDot = false;
}
if(stepCount < stepNums)
{
//只要小於stepNums,怪物移動的方式如下
monster.x += vx;
monster.y += vy;
}
else
{
//沒有運動到終點
if(currentIndex < num - 1)
{
//對應關鍵點移動到下一個
currentIndex++;
//迴圈計數重置
stepCount = 0;
//通過了一個點,開始一段新路程
passedDot = true;
//將小怪定位到新起點
monster.x = Dot(pathArr[currentIndex]).x;
monster.y = Dot(pathArr[currentIndex]).y;
}
}
stepCount++;
}
按下cltr+enter執行一下,看到小怪的確是按照指定的路徑在運動,而且小怪的自轉角度也是合適的。
文章來自http://cdbym.blog.163.com/blog/static/28331498201167104013925/
相關文章
- 簡單塔防小遊戲遊戲
- 用unity製作簡單的太空遊戲(2)-簡單炮臺Unity遊戲
- 氣球塔防6 for Mac(BloonsTD6 塔防闖關遊戲)Mac遊戲
- python手機版做小遊戲程式碼大全-python簡單小遊戲程式碼 怎麼用Python製作簡單小遊戲...Python遊戲
- Golang簡單製作一個池Golang
- 抵禦惡意http攻擊,使用redis製作一個簡單的防禦HTTPRedis
- HTML簡單網頁製作HTML網頁
- 用Unity開發一款塔防遊戲(一):攻擊方設計Unity遊戲
- 小遊戲的製作遊戲
- 【好遊拆解】在塔防遊戲裡競拍又競爭!遊戲
- python 精靈模組非常簡單的讓小朋友製作遊戲和動畫Python遊戲動畫
- Unity《ATD》塔防RPG類3D遊戲架構設計(一)Unity3D遊戲架構
- 而立之年的塔防遊戲,還能屹立多久?遊戲
- 製作遊戲的遊戲:創作樂趣的樂趣遊戲
- 使用Unity製作遊戲AIUnity遊戲AI
- 《變數》的策劃日誌(上):如何設計一個塔防遊戲?變數遊戲
- 動作+生存+潛行+塔防……一個人花費五年開發的遊戲可以“奇特”到什麼地步?遊戲
- 遊戲雜談:大製作遊戲和小製作遊戲,在開發思路方式上的差別遊戲
- 這款一個人製作的單機遊戲,成為了網友眼中的抗日“神作”遊戲
- 我對SLG遊戲製作的一些思考遊戲
- table表單製作個人簡歷
- Debian安裝包的簡單製作
- 塔防遊戲又見黑馬——《小兵別囂張》不一樣的投放套路遊戲
- 如何低成本製作遊戲音效遊戲
- B站遊戲涉足MOBA賽道,專訪《重構:阿塔提斯》製作團隊遊戲
- 製作一個超簡單的全屏外掛(基於JQuery)jQuery
- 【潛力佳作】動作塔防手遊的新解法 - 《Nightfall》產品分析
- 製作簡單的個人網頁教程網頁
- 寶塔簡單實用
- 塔防PVP手遊設計的困局(上):關於“逆塔防”與“正反饋”
- Python製作太空射擊小遊戲!Python遊戲
- 遊戲角色寫實頭髮製作遊戲
- 如何用Python製作自己的遊戲Python遊戲
- 製作遊戲載入進度條遊戲
- 【爆款新遊】協作塔防賽道再出佳作 - 《Coop TD》產品分析OOP
- 讓動作遊戲比吃豆人還簡單? 給遊戲設定極簡難度,真的會更快樂?遊戲
- 巨人網路製作人聊遊戲長留: 提高遊戲長留是遊戲製作終極追求遊戲
- 使用THREE.js製作一款3D遊戲JS3D遊戲
- 實戰Flash遊戲開發遊戲開發