Unity项目 - DeathtrapDungeon死亡地牢
目录
游戏原型
死亡地牢是一款 2D-Roguelike 的地牢冒险游戏。手握利刃,斩杀怪物,在凶险的地牢内生存下去。但注意,敌人也并非善茬,保持警惕,取舍果断,足智多谋才是制胜的关键。
项目地址:DeathtrapDungeon - SouthBegonia
试玩下载:DeathtrapDounge 提取码:wekp
项目演示
绘图资源
- 主要美术资源来自:Dungeon Tileset - itch
代码实现
总控系统:
- GameManager.cs:单例模式,统一管理各类的实例,及游戏数据(经验,金币,各类Sprite),升级系统,UI管理,场景管理,存读档机制等
生命值系统:
- Fighter.cs:生命值,最大生命值,击退系数;伤害系统
Player:
- Player.cs:Rage怒气系统;换皮肤,死亡重生等
- Mover.cs:移动系统
- Weapon:武器攻击系统,Rage技能系统
Enemy:
- Enemy.cs:大部分敌人的类,包含经验值,追逐攻击系统,死亡复活系统等
- Enemy_Chest.cs:宝箱怪
- Trap.cs:陷阱
- Boss0.cs:最终boss
GUI:
- FloatingTextManager/FloatingText.cs:浮动文本显示系统
- CharacterMenu.cs:菜单栏系统
- CharacterHUD.cs:玩家生命值,经验值,怒气值显示,死亡页面
场景:
- CameraFollow.cs:相机跟随系统
- Portal.cs:不同场景传送门
- Portal_Door.cs:当前场景传送门
交互物件:
- NPCTextPerson.cs:NPC交互
- Chest.cs:宝箱
- Crate.cs:可破坏物件
- HealingFountain:治愈泉水
- Door.cs:开关门
*注意事项
游戏的核心机制,如战斗,场景切换,物体交互等已成型,且Tilemap完善(地面层,上下墙壁层,地表物件层,碰撞层),除了基本的静态Tiles外,还有几个AnimatedTile(泉水,熔岩等),及ChestBrush宝箱笔刷方便宝箱的摆放设置等等。如想要自行定制关卡,完全可以基于此脚本系统下,对Tilemap的重绘、游戏数值、场景物件摆放、NPC台词等即可。
此外,itch.io网站内含有大量优秀的2D绘图资源,可按需合法使用。
技术探讨
- 关于武器挥动进行攻击的animation:
- 武器的Swing动画时间建议大于0.3s,否则间隔过短即便每次都能攻击到敌人但不足以有效推开敌人而被攻击
- 武器劈砍至水平的时间建议在前半时间内完成,因为涉及武器的碰撞伤害;水平下的武器碰撞器范围较长,利于和敌人保持距离,并造成伤害
- 最好模拟真实情况下的劈砍动作,我将其分为以下几部分:
- p1:武器抬起并后仰,此过程速度适中,禁用collider
- p2:从90'到0'进行主劈砍动作.此过程前半速度快,后半速度极快,启用collider
- p3:0'到-20'最终劈砍动作.此过程不在于速度,而在于保持帧数(时间)
- p4:武器收回,速度快,禁用Collider
- Tilemap的绘制:
- 最好在确定美术资源时即确定整体绘制的像素信息,场景风格等,假若后期要添加其他要素,风格不同很不应景
- Tile的类型最好也确定,使用普通tile+animation物体,或是RuleTile实现各类功能
- 瓦片的渲染顺序体现在Tilemap的顺序(例如上墙wall层,下墙壁ScreenWall层;上层可被player遮挡,下层可遮挡player)
- 非瓦片物体的渲染顺序体现在SpriteRenderer里的SortingLayer和OrderLayer;合理设置遮挡与被遮挡关系
- 2D碰撞问题:
- 所有物体最好处于同一z=0平面,否则一些碰撞检测容易出问题
参考来源
Unity项目 - DeathtrapDungeon死亡地牢的更多相关文章
- 为Unity项目生成文档(二)
Unity项目生成文档 接着上篇文章:为Unity项目生成文档(一) .Net项目可在VS配置XML 我们可以在VS中通过配置来生成xml文件,但是unity的project,就算同样配置了xml文档 ...
- unity项目实现“再按一次退出程序”提示功能
unity项目,再按一次退出程序,按第一次做提示,再按一次,程序退出. float _waitTime = 2f;//前后两次按退出间隔时间 void OnGUI() { ) { GUI.Label( ...
- Unity学习笔记(二)——第一个Unity项目Hello Unity
保留版权,转载请注明出处:http://blog.csdn.net/panjunbiao/article/details/9318811 在这一篇文章里,参照宣雨松的<Unity 3D游戏开发& ...
- 关于Unity项目中创建项目遇到的一些问题
1.Unity调用Android的方法默认不是在UI线程执行,所以在Android上写一些页面的重绘的方法,让Unity去调用时,注意要在Android中添加对应的runOnUiThread才可以: ...
- 使用Slua框架开发Unity项目的重要步骤
下载与安装 下载地址 GitHub 安装过程1.下载最新版,这里, 解压缩,将Assets目录里的所有内容复制到你的工程中,对于最终产品,可以删除slua_src,例子,文档等内容,如果是开发阶段则无 ...
- Unity项目开发过程中常见的问题,你遇到过吗?
最近看到有朋友问一个unity游戏开发团队,需要掌握哪些知识之类的问题.事实上Unity引擎是一个很灵活的引擎,根据团队开发游戏类型的不同,对人员的要求也有差异,所以不能一概而论.但是,一些在Unit ...
- 用好lua+unity,让性能飞起来——关于《Unity项目常见Lua解决方案性能比较》的一些补充
<Unity项目常见Lua解决方案性能比较>,这篇文章对比了现在主流几个lua+unity的方案 http://blog.uwa4d.com/archives/lua_perf.html ...
- Unity项目中的资源管理
这是我在2017金山技术开放日分享的部分内容.从贴图资源格式配置的介绍开始,引申出资源配置工具,最后再谈谈一整套项目资源管理方案.在GitHub上可以获取到资源配置工具的代码,是基于下面理念的一份简单 ...
- Unity项目接入应用宝SDK实现截图功能
Unity项目接入应用宝SDK实现截图功能 问题由来 点击应用宝悬浮窗 如图所示 左下角有一个截图按钮 需要解决那些问题 截图信息需要由游戏引擎提供 SDK获取截图信息为同步 但是Unity引擎没有提 ...
随机推荐
- Vue入门到TodoList练手
学习资料 慕课网 - vue2.5入门 基础语法 示例代码1 <div id="root"> <h1>hello {{msg}}</h1> &l ...
- 前端优化---回流 (reflow)与 重绘(repaint)
回流(reflow):指的是网络浏览器为了重新渲染部分或全部的文档而重新计算文档中元素的位置和几何结构的过程. 页面上节点是以树的形式展现的,我们通过js将页面上的一个节点删除,此时为了不让剩下的节点 ...
- Django之静态文件,中间件,admin后台管理
静态文件 静态文件的使用 在 网页使用的css文件,js文件和图片等叫做静态文件.1)在项目下新建静态文件夹 static. 2) 配置静态文件所在的物理目录.Settings.py STATIC_U ...
- JavaScript的“true/false && expression”逻辑表达式
true/false && expression 在学习react的过程中,遇到了如下一个方法: function Mailbox(props) { const unreadMessa ...
- SDU暑期集训排位(8)
A. A Giveaway 签到 B. Game of XOR 做法 dp[G][L][R]表示在倒数第G代,左边的数是L,右边的数是R,下面共有多少个0和1 区间和转换成两次前缀和和一次单点查询 利 ...
- AC自动机 数组实现
AC自动机的实现原理是KMP + 字典树. 学AC自动机之前要先去学KMP 和 字典树. 第一步先构建一个字典树. void Insert(){ , len = strlen(str); ; i &l ...
- HDU - 3966 树链刨分
题目传送门 操作就是询问某个点的值, 然后就是对一条路径上的值全部修改. 最基本的树刨题目了. 树刨的思想: 1. 对于每个点找到他的重儿子. void dfs1(int o, int u){ sz[ ...
- Codeforces Round #481 (Div. 3) B. File Name
题目地址:http://codeforces.com/contest/978/problem/B 题解:一串文件名里不能出现连续的xxx,询问进行几次操作后,文件名才不会出现xxx. 方法:只要遍历一 ...
- POJ 1182 食物链(经典并查集) (多组输入有时乱加也会错!)
多组输入有时乱加也会错! 这次用多组输入竟然,不用竟然对了,所以以后做题目,若是答案错误,先看加上或者删掉多组输入,看对不对 食物链 Time Limit: 1000MS Memory Lim ...
- Gym 100851 题解
A: Adjustment Office 题意:在一个n*n的矩阵,每个格子的的价值为 (x+y), 现在有操作取一行的值,或者一列的值之后输出这个和, 并且把这些格子上的值归0. 题解:模拟, 分成 ...