rpg专题提供rpg的最新资讯内容,帮你更好的了解rpg。
我遇到了如下图所示的错误: <a href="https://i.stack.imgur.com/Y2Z1a.png" rel="nofollow noreferrer"><img src="https://
我对已在生产中运行并使用文件替换的程序进行了修改。 我无法编译它,因为声明为输入的文件与另一
前言: 上次写了一个消灭星星,很多人都回复了我,并且提出了宝贵的意见,先感谢大家啦~上几个月我发现了一个很好玩的游戏——《BattleHeart》,心里面想着,这么好的游戏要是可以联机跟好朋友一起玩(就像CS那样)那就爽歪歪了,于是就动手开始模仿这款游戏,并且为其加入网络模块。可惜,因为对多人网络游戏开发并不熟悉,虽然最后还是开发出来了,但是效果却差强人意。不过在开发过程中学到了很多新的知识和网络
一、前言 关于骨骼动画,如果大家不知道是什么东东的话,可以先百度一下。 如果大家有去玩过我介绍的《BattleHeart》的话,你会发现,里面用到的就是骨骼动画,而且骨骼动画有几个帧序列动画无法比拟的优点: 1)不需要太多的资源,就可以实现多种动画 2)动画效果可以自行设置(很适合像我这种没有美工MM辅助的苦逼) 3)可以随意替换,如果你有认真观察《BattleHeart》的话,你会发现,当你的英
一、前言 在一个游戏里面,需要用到的数据一般都是由游戏策划提供的(这里的策划还是由我自己担任啦哈哈)。什么是需要用到的数据?例如我创建一个角色A,A有他自己的攻击力,防御力,速度等,再创建一个角色B,B也有自己的攻击力,防御力,速度等。每个角色都有一些基础属性,但是对应不同的角色,属性的值有可能不同。我们不可能在代码里面把这些数据写死。最好的办法是从一个文件(通常是Excel表格)中读入数据,这样
一、前言 假设你已经看懂了前面三节,那么接下来我们就开始进入真正的开发啦~~ 二、正文 1、预先加载 首先我们先谈谈预先加载,什么叫预先加载,就是在资源没有被用到的时候就先把资源加载到内存,等要用的时候直接从内存里面获取就好。 这样的好处是当用的时候会省去加载的时间,但是坏处就是占用一部分内存,这是一个时间与空间的选择问题。 游戏一开始进入的是MenuScene bool MenuScene::i
一、前言 前面几节好像与我们一开始说的游戏不太相关,现在我们正式进入战斗场景的开发。 不过凡事不要心急,要循序渐进,我们先搭建一个能够让角色在上面行走的战斗场景吧。 二、正文 首先精简一下Role类,让他能够实现移动功能就好了。 顾名思义,role就是角色,在战斗场景出现的一个一个人都是一个role,废话不多说,直接贴上经过精简过得Role头文件 class Role : public Node{
一、前言 一般来说,我们在做一个稍微有点智能的实体的时候都会用到状态机。这里我没有用到,但是我也为角色设置了几种状态。 如果大家看了上一节,也完成了角色的基本移动的话。对比过我一直说的《BattleHeart》之后,你会发现,现在的控制移动操作也太挫了,既没有那一条拉出来的导航线,也没有角色被选中的效果。所以接下来我们要对我们的基本控制操作加入一些效果。 二、正文 1、角色的状态 来来去去我们的角
一、前言 至此,我们的战斗场景关于角色移动已经讲得七七八八了。不过还是有一些问题需要注意注意。 二、正文 在第五节里面我们讲了FlightLayer里面有一个很重要的容器m_rolesArray,并且说道其初始化是由以下两个函数负责的。 void FlightLayer::initTeam(const HeroMessage& h1,const HeroMessage& h2,const Hero
一、前言 前面我们已经基本学会了怎么让角色走起路来而且也做了很多的优化。下面是时候开始战斗了。不过还是不要急,我们先暂时不引入英雄和怪物这两个类(毕竟只要是Role就可以打架,哪怕是英雄打英雄) 二、正文 先大致说一下整个思路: 1.选择角色并且可以拉出一条导航线出来(之前已经做了) 2.判断导航线的终点,如果终点刚好是在一个Role的身上,那么..嘻嘻就打他了。 3.角色移动到目标身边 4.角色
一、前言 上一节我们讲完了攻击,其实也只是攻击者一方一厢情愿地播放自己的攻击动画罢了,被攻击的那一方根本不知道发生了什么,攻击者和被攻击者还没有联系起来。 所以,我们就引入了子弹这个东东。 二、正文 一开始我在开发的时候想到用物理引擎,后来想了想还是算了,一是难控制,二是可能会遇到一些问题(例如两个人之间可能会发生碰撞。。) 所以还是将错就错,直接用update函数解决问题吧。 子弹,顾名思义,就
一、前言 先说明一下,Role类其实是有很多属性的 protected: /*与战斗相关的数据*/ int m_id; //id Role* m_attackTarget; Role** m_attackTargetPtr;//攻击目标 Point m_desPoint;//目标位置 ROLE_STAT en_stat; //当前状态 FlightLayer* m_la
一、前言 先补充一下,英雄的死亡 英雄的死亡,我们要在FlightLayer对m_rolesArray进行清除操作 void FlightLayer::cleanNullPtrInArray(){ auto it = m_rolesArray.begin(); while(it != m_rolesArray.end()){ if((**it)->getRoleStat() == Role
一、前言 人工智能,这是一个很深奥的话题。我们这里的怪物也要智能一点,至少会自动找英雄来打吧。 二、正文 现在我才开始看怪物的头文件 class Monster : public Role{ public: Monster(); static Monster* create(const std::string& name,FlightLayer* layer); void initMonst
一、前言 怪物已经变聪明了,我们的英雄不变得厉害点怎么行呢 二、正文 其实技能这个问题纠结了我好久,因为每个角色的技能都不一样(参考英雄联盟),我当初也想把技能做得多姿多彩的。所以我就想在代码中嵌入lua,可惜小弟不才,虽然最后弄明白了怎么搞,但是发现已经太迟了(应为要把之前的自定义的类都转成lua接口)。所以采用了一种很笨很笨的方法。 将技能之前,先看SkillMessage 还记得XXXMes
一、前言 整个教程快接近尾声了。还有一个暂停功能需要添加 二、正文 首先,我们要在右上方添加一个按钮 bool FlightLayer::init(){ MenuItemImage* pauseBtnItem = MenuItemImage::create("UI/pauseBtn.png","UI/pauseBtn.png",[=](Ref* pSender){Director::getI
一、前言 这次的Flighting系列教程一口气写了2天,到这里就要结束了。接下来我说明补充一下一些前面没有提到,但是我觉得有必要讲一下的。 二、正文 1.怪物的出场 前面已经说了一个个的XXXMessageUtil,其实StateMessageUtil是比较特别的。首先我们先看看StateMessage的Excel表(关卡) 前面的字段大家可以参透参透,我主要讲一讲monster字段 monst
原帖子是用 cocos3.2开发实现的,我这里用 3.4来重写一遍 cocos2dx3.4开发 RPG《Flighting》 文档链接
开发横版的RPG格斗游戏有许多思路。多人在线类型需要位移在每个客户端是同步的,所以一般不使用物理引擎。而单机类型的RPG通常都会使用物理引擎来实现动作和反馈的效果。 当然,为了把格斗游戏的效果做到极致,使用物理引擎是必不可少的。于是我在闲暇时间实现了一个基于cocos2d-x / cocos2d-html5和物理引擎为Box2d横版格斗RPG游戏原型。这个Demo只是实现了操作、人物状态变换、物理
最近自己写RPG,发现在角色对象运动上面还是可以运动到不少的以前数学知识(经理各种纠结的脑补),好久没有写博客了,趁热总结一下算法思路,免得自己过两天又忘了。 已知角色速度和目的地,求每帧位置 已经知道了一个角色 bodyA 速度为 像素/秒 float speed  = 5 目的地为  Point  destination 当前地点为 Point currentPosition = bodyA.