版权声明:

  • 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客"
  • 您可以自由转载,但必须加入完整的版权声明!

客户端

实现军队降落状态

  • 将军队空闲状态会进入移动状态改为进入ArmyCallState状态
OnEnter(){
// TODO: 选择路点,进入ArmyCallState
this.card.fsm.ChangeState(ArmyCallState);
}
  • 在ArmyCallState脚本中实现了ArmyCallState类(就是编写了ArmyCallState脚本)

在军队移动状态中增加播放行走的动画的功能

//取得军队移动方向与上方向之间的弧度
let radian = dir.signAngle(cc.Vec2.UP);
//将弧度转为角度
let angle = cc.misc.radiansToDegrees(radian); //如果军队移动方向与上方向的夹角在 -45到45之间,说明军队移动的方向是偏向上方的
if (angle > -45 && angle < 45) {
let clip = this.animation.getClips()[0]; //取得往上走的动画片段
if (this.animation.currentClip != clip) { //如果当前播放的动画不是往上走的动画
this.animation.play(clip.name); //播放往上走的动画
}
}
else if (angle > 135 || angle < -135) { //下
let clip = this.animation.getClips()[1]; //下走
if (this.animation.currentClip != clip) {
this.animation.play(clip.name);
}
}
else if (angle >= -135 && angle <= -45) { //左
let clip = this.animation.getClips()[2]; //左走
if (this.animation.currentClip != clip) {
this.animation.play(clip.name);
}
}
else if (angle >= 45 && angle <= 135) { //右
let clip = this.animation.getClips()[3]; //右走
if (this.animation.currentClip != clip) {
this.animation.play(clip.name);
}
}

在军队移动状态中增加获取移动速度和路点索引

//取得初始路点(桥)
let initialWaypoint = WayMgr.instance.ways[this.wayIdx].nodes[0].position;
//取得终点(国王塔位置)
let destination = WayMgr.instance.ways[this.wayIdx].nodes[1].position;
//如果玩家到国王塔的距离 小于 桥到国王塔的距离
if(destination.sub(this.card.pos).mag()<destination.sub(initialWaypoint).mag()){
this.wpIdx = 1; //就将路点索引设为1(就是直接往国王塔走)
} let moveSpeed = this.card.propsTmp.mspd //获取模板属性中的移动速度(枚举值)
if(moveSpeed == MoveSpeed.Invalid){ //如果速度是无效
this.spd = 0;
}
else if(moveSpeed == MoveSpeed.VeryFast){ //非常快
this.spd = 50;
}
else if(moveSpeed == MoveSpeed.Fast){ //快
this.spd = 40;
}
else if(moveSpeed == MoveSpeed.Mid){ //正常
this.spd = 30;
}
else if(moveSpeed == MoveSpeed.Slow){ //慢
this.spd = 20;
}
else if(moveSpeed == MoveSpeed.VerySlow){ //非常慢
this.spd = 10;
}

在军队移动中添加追踪敌人功能

  • 获取敌方战斗玩家
  • 遍历敌方战斗玩家的战斗卡牌数组
  • 从敌方战斗卡牌数组中找到离this战斗卡牌最近的敌方战斗卡牌
  • 如果那个敌方战斗卡牌在this战斗卡牌的视野内就往敌方那里走
  • 如果那个敌方战斗卡牌在this战斗卡牌的攻击范围内就进入军队攻击状态

Cocos经典游戏教程之仿皇室战争的更多相关文章

  1. 【特别推荐】Web 开发人员必备的经典 HTML5 教程

    对于我来说,Web 前端开发是最酷的职业之一,因为你可以用新的技术发挥,创造出一些惊人的东西.唯一的问题是,你需要跟上这个领域的发展脚步,因此,你必须不断的学习,不断的前进.本文将分享能够帮助您快速掌 ...

  2. 如何临时发布部署Cocos小游戏到Linux服务器,让别人能在微信打开

    两个星期前,我们发布了第一个小游戏教程: 教程:制作一个小游戏送给喜欢的TA(不会编程也能学会哦) 上周有好几位小伙伴在b站催更,呃,作为小透明,收到催更信息后还是很激动的!竟然有同学在看我们的小教程 ...

  3. Android 游戏教程让人物动起来

    在这里给大家分享Android游戏教程怎样让人物动起来,话不多说了,直接进入正题. 一. 准备工作     首先要准备好要使用的人物动作图和地形图.把它分割成16个不同的动作,循环播放同一行的4个不同 ...

  4. C++复现经典游戏——扫雷

    国庆小长假,当大家都去看人山人海的时候,我独自一人狂码代码.这两天想要实现的内容是Windows上的一个经典游戏——扫雷.相信90后和一些上班族对此并不陌生.然而,从win8开始,扫雷就不再是Wind ...

  5. C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例

    C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...

  6. C#开发Unity游戏教程之判断语句

    C#开发Unity游戏教程之判断语句 游戏执行路径的选择——判断 玩家在游戏时,无时无刻不在通过判断做出选择.例如,正是因为玩家做出的选择不同,才导致游戏朝着不同的剧情发展,因此一个玩家可以对一个游戏 ...

  7. C#开发Unity游戏教程之游戏对象的行为逻辑方法

    C#开发Unity游戏教程之游戏对象的行为逻辑方法 游戏对象的行为逻辑——方法 方法(method),读者在第1章新建脚本时就见过了,而且在第2章对脚本做整体上的介绍时也介绍过,那么上一章呢,尽管主要 ...

  8. C#开发Unity游戏教程之使用脚本变量

    C#开发Unity游戏教程之使用脚本变量 使用脚本变量 本章前面说了那么多关于变量的知识,那么在脚本中要如何编写关于变量的代码,有规章可循吗?答案是有的.本节会依次讲解变量的声明.初始化.赋值和运算. ...

  9. C#开发Unity游戏教程之游戏对象的属性变量

    C#开发Unity游戏教程之游戏对象的属性变量 Unity游戏对象的属性——变量 通过对上一章的学习,读者应该了解到了,游戏对象上的属性与脚本中的变量,建立联系的方式就是将脚本赋予游戏对象.上一章只是 ...

随机推荐

  1. 2018.8.17 2018暑假集训 关于dp的一些感想(以目前的知识水平)

    学了这么长时间的dp似乎还是不怎么样 谨以此篇文字记录一年以来与dp斗智斗勇的各种经历 关于dp(也就是动态规划)似乎对于每个OIer来说都是一个永远的噩梦. 刚刚开始学dp的时候完全搞不明白(只是觉 ...

  2. CSU 1508:地图的四着色(DFS+剪枝)

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1508 题意:地图中四联通的块是一个国家,A和B每个人可以涂两种颜色,且B不能涂超过5次,相邻的国家 ...

  3. re正则

    #转义字符和原生字符 import re # # # 转义 # text = 'apple price is $299' # ret = re.search('\$\d+',text) # print ...

  4. VUE-CLI3.0安装和使用echart方法

    在Vue中使用echarts的两种方式 npm webpack vue-cli echarts vue.js   准备:使用vue-cli脚手架 如果你已经有自己的项目,可以跳过这一步. npm下载v ...

  5. Markdown下,上传图片问题

    最简单的方法: 1,登录qq 2,登录博客园,并打开博客园添加随笔的地方:如图: 3,选择需要截屏的地方,按住ctrl+alt+A截屏,然后在qq的发送栏内贴过去 4,鼠标左键按住不松开,然后拖到这里 ...

  6. Spring Aware 到底是什么?

    通过如下前序两篇文章: Spring Bean 生命周期之"我从哪里来"? Spring Bean 生命周期之"我要到哪里去"? 我们了解了 Spring Be ...

  7. ASP.NET 前端数据绑定---<%#%>及Eval()的使用

    ASP.NET 前端html代码中会经常出现的<%%>的代码,里面的文本其实就是不能直接输出到客户端浏览器的文本,是需要服务器解释的. 在ASP中,<%%>里面的文本是vbsc ...

  8. 微信小程序 textarea 层级过高的解决方式

    建立一个新的textarea 组件代替原生textarea ,废话不多说,上代码 <template> <view class="ui-textarea"> ...

  9. 如果通过脚本来关闭程序-linux

    正常情况下在linux关闭一个程序最好是走正常的关闭流程,不要直接杀死进程,这样程序的稳定性确实会收到影响,但是如果想通过脚本来关闭程序正常情况下比较困难的,我便采取了这种暴力的方法-直接杀死进程. ...

  10. 个人永久性免费-Excel催化剂功能第79波-自动及手动备份功能,比Onedrive还好用

    在OFFICE365里,有个自动保存功能,可惜保存的地址是在Onedrive里,在中国国情下,备份十分卡顿,近乎难以忍受的慢.虽然现在收费性的网盘部分是可以有文件版本的备份功能,但也是繁琐且最要命的是 ...