ruyerz / turretagent Goto Github PK
View Code? Open in Web Editor NEWSimple 2D top-down tower defense game with a controllable hero
Simple 2D top-down tower defense game with a controllable hero
见:#102
商店实现建议单独的场景设计UI,根据gamemanager的当前关卡来补能买的兵
武器、修复、搬运炮塔、道具等操作模式全部由切换道具实现
添加道具:扳手,允许修复
所有可以成为道具的东西需要实现Item接口:
interface Item{
int getNumber();
Image getIcon();
bool Activate(); // 切换到这个道具时的函数入口,返回结果为是否切换成功
bool Deactivate(); // 从这个道具切换走时的函数入口,返回结果为是否切换成功(如果是炮台放在不合法位置可能切换失败)
}
所有子弹需要实现Bullet接口:
interface Bullet{
float getDmg(GameObject o);
void onHit(GameObject o); // 击中有效目标时的函数入口
void onKill(GameObject o); // 杀死有效目标时的函数入口
}
BulletInterface->BaseBullet->FriendBullet、EnemyBullet
特效子弹(例如,不一定实现,霰弹枪子弹的伤害衰减,护甲敌人的伤害减免)可以通过override getDmg函数实现。
PathBehavior 沿路径前进,到达路径终点扣除GameManager中基地血量
EnemyHPBehavior 血量与碰撞检测
ShootPlayerBehavior 射击玩家
所有Enemy对象在生成和销毁时必须在EnemyManager进行注册。生成注册在PathBehehavior 中,销毁注册有两个入口,在PathBehavior和EnemyHPBehavior中。
PlayerMoveBehavior [v]
PlayerHPBehavior
对不同道具的支持:
采用多个Behavior的模式,在不同Item的Activate函数中启用相关behavior。
PlayerShootBehavior [v]
PlayerBombBehavior
PlayerRepairBehavior [v]
PlayerTurretBehavior [v]
地图中有:—— 蔡沐祯WIP
敌人生成:
List<[string,float]> UpgradeOptions()
: 返回一个(升级名称,升级cost)的listbool Upgrade(int index)
: 升级第i个选项,返回值为升级成功包含不同种类敌人
Enemy、enemy06:运输兵,只移动,不射击
enemy02、enemy03、enemy04:步兵,移动并射击
artillery:炮兵,射击CD长,射出的子弹威力大,子弹飞行速度慢
fly_enemy:飞行兵,血条厚
sword_enemy:起错文件名了~在被塔检测到的时候射出光线,让炮塔停止攻击一秒
enemy07、enemy08:刀剑兵,近距离攻击,只攻击塔
一种风格的地图素材
另一种风格的地图素材
两种字体素材
物品:待扩充
金币、钻石、雷达、绿币
预制件,尚未整理
枪+玩家,尚未整理
不知道干啥的,万一能用上呢x
子弹效果
主人公武器射击准星,不同武器不同准星
与文件"weapon12"武器与子弹效果一一对应
含有多个文件夹,共有五种炮塔以及对应炮筒,炮弹可从子弹效果里获取
基地
爆炸效果,敌人摧毁/炮塔被毁/玩家死亡效果,可能需要再找不同爆炸效果用以区分爆炸对象
英雄死亡图片:可作为game over提示框弹出时的图片
大致描述模块及其接口
PlayerItemBehavior
PlayerMoveBehavior
PlayerTurretBehavior
TODO:
ItemBase
WeaponBase : ItemBase
RepairTool : ItemBase
TODO:
UIHotKeyBar (未完成)
TODO:
Turret修改:
手枪,地雷2,RPG1
基础Turret
时间 | path1 | path2 |
---|---|---|
0s | 运输兵*1 | |
5s | 运输兵*1 | |
10s | 运输兵*1 | 运输兵*1 |
15s | 运输兵*3 | |
25s | 运输兵*5 | |
40s | 运输兵*7 | |
50s | 运输兵*2 步枪*1 | 运输兵*2 步枪*1 |
基地血量:400
玩家血量:30
MP5、RPG*5、地雷*3
初始
时间 | 标准路径 | 短路(不绕圈) |
---|---|---|
0s | 运输兵20 步兵3 | |
30s | 运输兵10 步兵10 | |
60s | 运输兵10 鬼火射手5 | |
90s | 霰弹枪手*5 | |
120s | 步兵*10 | 运输兵*10 |
150s |
循环
时间 | 标准路径 | 短路 |
---|---|---|
0s | 步兵15 鬼火射手10 运输兵*10 | 运输兵5 步兵3 |
50s |
生成的数组从套娃变成一维数组,每个数组有四个值:
path: 路径名称
spawn: 敌人序列(aaabaaa,每个字母代表不同种类)
interval: 生成时间间隔
starttime: 开始生成时间
初始化:读取数组,将其转化为
(path,enemy,time)的以time升序的生成序列。
生成:每次Update检测序列前端的生成时间是否<=timestamp。
清光敌人之后的时间加速:如果当前敌人的Hashset为空,则timestamp增加速度加快。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.