壓縮gif的時候有問題..但是可以將就看.
這裡我一共實現了5種炮塔的攻擊:
單體暴擊
範圍群攻
毒液減速
整排攻擊
先說下我之前見過的這類遊戲的原始碼,然後再說下我的做法.
看過的幾個原始碼,基本上實現的思路就是:
炮塔選中目標
炮塔發射子彈
炮塔控制子彈
子彈打中目標
炮塔根據自身攻擊計算損失血量,或者怪物收到炮塔攻擊事件,計算血量
這種做法看起來還是蠻流暢的,但實際上拓展性不是很好.設計上來講,這種做法把炮塔與子彈耦合在了一起,導致把他倆變成了乙個整體,不便於後面整個遊戲內容策劃的修改,或者延展,而且**看起來應該也會很多.
我的做法流程大體如下:
炮塔選中目標
炮塔建立子彈,告訴子彈目標以及炮塔的攻擊力
子彈自行計算軌跡,控制位置移動(從這裡開始,身為子彈,我只知道我的目標,不知道誰把我弄出來的)
子彈打中目標
根據自身屬性,以及不知道誰告訴我的攻擊力數值,進行掉血計算
這樣做是不是就把炮塔以及子彈分成了兩個個體,這種做法其實也可以把子彈叫成技能,炮塔的技能.
炮塔的設計:初期設計的時候,在炮塔基類內,只需實現目標選中,發射炮彈即可,然後子類裡面做一些特效處理,例如:攻擊動畫,待機動畫,轉向動畫,等一些顯示方面的事情,我只做我自己該做的事情.至於我發射出來什麼子彈,就不是我關心的問題了,如果遊戲足夠複雜,這部分後邊也可以做成工具,策劃只需要給不同炮塔配置相關技能就好
子彈(技能)的設計:這裡面就很簡單了.因為在子彈這裡,只需要做移動,以及自身的特效顯示.也是不需要關係其他的事情.
這樣的設計**看起來會非常簡潔,增加了可讀性,程式在開發過程中,只專注於小部分業務邏輯即可:
所以我在寫這幾個技能的時候,每個基類裡面其實只是實現了下攻擊軌道,配置下移動速度,還有就是一些技能特效的定義(持續掉血,減速),具體去做這些特效處理的事情,交給受到攻擊的怪物就好了,通過不同的狀態,做不同的處理,減速只需要調整speed,毒液只需要顯示個中毒效果,以及定時掉血,**多的也就是那個範圍攻擊,因為有個貝塞爾曲線的實現,貼個簡單的類
--減速炮塔子類實現
local bulletslowview = class("bulletslowview",bulletbaseview)
function bulletslowview:oncreate()
self.png = "textures/bullet/bullet.png"
self.super.oncreate(self)
self.sprite:setcolor(cc.c3b(180, 250, 250))
--屬性
self.model.slowrate = 0.7 --減速比例(這個是資料,不應該在這裡賦值,僅是作為舉例)
self.model.slowtime = 2 --減速時間
end--減速攻擊(如果後期**複雜,這部分內容應該放到cotroller處理)
function bulletslowview:attackedtarget()
--攻擊特效的資料
local attackdata =
self.model.target:loselife(self.model.damage,attackdata)
self.model.target:update()
endreturn bulletslowview
總的來講,邏輯會變得清晰很多,後期不論如何修改,都可以完美的應對.並且這種思路可以應用到很多遊戲中,最接近的是雷電這類的射擊遊戲內.複雜點的就是夢幻一類的回合遊戲,這種做法會更符合這種回合制遊戲,策劃可以隨意給不同的怪物繫結不同的技能,也可以實現boss的多技能組合.這樣看起來,是不是這種大型遊戲實現難度就不大啦 遊戲開發 十四 之 塔防專案完結篇
第乙個專案算是基本完成.基礎玩法確定,玩法功能實現,服務端介面聯通,記錄下過程,後面會說具體功能點 除去前期框架搭建時間,整個專案玩法功能0 1的實現基本用了半個月時間,都是業餘時間搞的,總時長沒有記錄.速度自己還算滿意,都是從頭寫的,專案難度也不大,cocos lua這塊也基本撿起來了 整體功能如...
unity零基礎塔防遊戲開發日記day1
利用cube建立基礎地板 正常建立,就是挑好版本,改好專案名和路徑就開始 介面布局 tall project布局 單排列 在project中右擊建立新資料夾,ctrl s將現在的場景儲存為main scenes 右鍵層級,新建乙個plane 平面 在檢查器 inspector 中的座標 transf...
unity3f遊戲開發之遊戲設計中運營重用體系
遊戲設計中,運用重用體系重用資源包括有以下幾個設計目的 1 方便玩家識別 為了方便玩家識別某一類遊戲中的要素,而採用的設計目的。如某種某種動物的皮毛的道具圖示。為了區分不同,除了基本圖素相同外,不同之處只是以變換顏色和更改名稱加以區分,這樣可以方便玩家快速識別圖示。2 降低客戶端的容量 遊戲中最占用...