CocosCreator游戏开发(四)实现摇杆控制角色功能
时隔3年,我又开始继续写这个系列的帖子了,也不知道是会写完全系列,还是再次夭折。
废话不多。直接开始主题了
主要实现的功能点包含这些内容:通过摇杆控制角色进行八方位移动,并按照各方位播放对应移动动画
效果图如下:

本次案例其实都是拼凑网上别人的一些现成代码,然后进行整合梳理
涉及到的相关内容如下:
参考代码如下:
1.Cocos Creator 地图滚动&摄像机人物跟随
地址:https://www.bilibili.com/video/BV1et411J7iC
2.joystick摇杆控件
代码地址:https://github.com/YunYouJun/cocos-creator-joystick
在线演示:https://www.yunyoujun.cn/cocos-creator-joystick/
3. Animation动画创建
教程地址:http://www.cocoachina.com/bbs/read.php?tid-458312.html
我其实也只是代码的搬运工,通过对以上三部分的整合,最终就实现了我想要的效果。
开始介绍项目
场景结构

场景中分别包含了以下控件:
- MainCamera 负责绘制UI
- RoleCamera 负责绘制角色(之后的遥感其实也是控制这个摄像头的坐标移动)
- MapView 地图(里面包含了一些地图相关的内容,在参考代码里面的视频有做解释,我这里不做详细介绍了)
- Role 主角,主要的控件,相关的控制代码都挂在主角上面
- joystick 摇杆控件,该部分代码可以直接通过参考代码2去下载,然后直接使用即可。
代码结构

其实需要讲解的代码也就两部分:joystick.js 与Role.JS
Joystick组件
属性(Properties)
- dot :摇杆操纵点
- ring :摇杆背景节点
- joystickType :触摸类型(跟随,固定两种)
- directionType :方向类型(4方向,8方向,全方位)
- _stickPos :摇杆所在位置
- _touchLocation :触摸位置
函数(Functions)
- _initTouchEvent : 初始化
- _onChangeJoystickType : 更改触摸类型
- _touchStartEvent : 当手指按下时触发,判断触摸类型,并根据触摸类型执行相应动作
- _touchMoveEvent : 当手指按住摇杆控件时持续触发,先判断按下的位置是否相同,如果相同,则不做处理。
- _touchEndEvent : 当手指抬起时触发,结束相关动作
Role组件
主要函数(Functions)
- _updateCameraPosition :更新摄像机位置
- _getTilePos : 计算摇杆角度
- onTouchMove : 按住摇杆时持续触发

- getCalculaAngle : 将摇杆移动的坐标进行角度转换,转换之后用来判断朝哪个方向移动了

- getfwinfo : 根据角度判断角色应该朝哪个方向

- move : 移动摄像头

- update :

主要逻辑顺序
当用户按住摇杆时触发onTouchMove 事件,判断移动方向,切换角色动画。
最后就是贴代码了
链接:https://share.weiyun.com/8WRBYpR5 密码:jny2wj
CocosCreator游戏开发(四)实现摇杆控制角色功能的更多相关文章
- CocosCreator游戏开发---菜鸟学习之路(一)
PS(废话): 辞职后在家好久好久了,久到经济不允许了,接着就准备再次出去找工作了,然而工作哪有那么好找,特别是像我这种菜鸟.而且我还准备转行,准备去做游戏,技能等级接近于0,那工作就更难找了.既然如 ...
- 喵的Unity游戏开发之路 - 玩家控制下的球的滑动
- CocosCreator游戏开发(五)实现技能按钮
在上一篇中,已经顺利的实现了通过摇杆控件来控制角色移动的例子 这一篇内容中,主要来实现通过摇杆来操作技能施法位置的功能 代码效果如下: 在最初的想法中,我是想将摇杆与技能施法范围以及施法位置做成一个组 ...
- Unity3D 游戏开发构架篇 ——输入控制
临近毕业之初.进入Unity3D这个行业,是一家小工作室.老板人非常不错,公司氛围也非常单纯.近期公司开发一款小游戏,初次上手,颇多周折,记录下自己的开发心得.主要涉及一些设计理念,互相交流. 先说下 ...
- CocosCreator游戏开发---菜鸟学习之路(二)SocketIO简易教程
请先参考教程司令部-SocketIO教程进行相关操作 开发完成后部分用户会出现持续输出 a userConnected的BUG 如下图所示 经过一段时间的BUG检查终于发现了问题所在.每个人碰到的情况 ...
- CocosCreator游戏开发---菜鸟学习之路(三)如何在CocosCreator中使用Pomelo
PS(废话): 这段时间都在研究网易的Pomelo框架,作为新手小白,自然遇到了不少坑爹的事情.(当然也有可能是因为自己技术不过关的原因所以导致在很多基础的问题上纠结了很久.)网上也搜索了好久,但是基 ...
- [Unity3D]Unity3D圣骑士模仿游戏开发传仙灵达到当局岛
大家好,我是秦培.欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 在前面的文章中.我们分别实现了一个自己定义的角色控制器<[Unity3D]Unity3D游戏开 ...
- 整理了一下浅墨大神的Visual C++/DirectX 9.0c的游戏开发手记
还是非常棒的博客,只是没有一个文件夹.所以自己做了一个山寨文件夹在这里.便于随时查找. 前面31期从略. [Visual C++]游戏开发笔记三十二 浅墨DirectX提高班之中的一个 DirectX ...
- [Android游戏开发]游戏框架的搭建
通常情况下,游戏开发的基本框架中,一般包括以下模块: 窗口管理(Window management):该模块负责在Android平台上创建.运行.暂停.恢复游戏界面等功能. 输入模块(Input):该 ...
随机推荐
- Centos 7 下安装PHP7.2(与Apache搭配的安装方式)
(1)源码包下载 百度云下载地址:https://pan.baidu.com/s/1xH7aiGYaX62wij4ul5P-ZQ 提取码:m9zc (2)安装php依赖组件: yum -y insta ...
- python Scrapy 从零开始学习笔记(二)
在之前的文章中我们简单了解了一下Scrapy 框架和安装及目录的介绍,本章我们将根据 scrapy 框架实现博客园首页博客的爬取及数据处理. 我们先在自定义的目录中通过命令行来构建一个 scrapy ...
- HTML主要标签应用
HTML属性 属性一般描述于开始标签 属性总是以名称/值对的形式出现,比如:name="value". HTML颜色 1.英文单词表示. red.green <p styl ...
- mybatis之if判断
今天使用mybatis开发公司中台项目踩的一个坑,分享并记录一下 踩坑前因:因项目中比较多状态字段,用了大量的Integer 0和1进行判断 在功能做完后只是粗略的点了下觉得没多大问题(来自程序员强大 ...
- 运行过程中给类添加方法 types.MethodType
class Person(object): def __init__(self,name = None,age = None): self.name = name#类中拥有的属性 self.age = ...
- win10在html上运行java的applet程序
Applet是采用Java编程语言编写的小应用程序,该程序可以包含在 HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同. 含有Applet的网页的HTML文件代码中部带有 和 ...
- PHP easter_date() 函数
------------恢复内容开始------------ 实例 输出不同年份的复活节日期: <?phpecho easter_date() . "<br />" ...
- 5.20 省选模拟赛 求和 组合数的性质 EGF CRT
LINK:求和 绝妙的一道题目.没做绝对亏了. 对于第一个subtask 考虑直接递推出组合数. 对于第二个subtask 考虑EGF 设两个EGF 都只含偶数项指标且系数为1的那种 一个到n一个到m ...
- luogu P3761 [TJOI2017]城市 树的直径 bfs
LINK:城市 谢邀,学弟说的一道毒瘤题. 没有真正的省选题目毒瘤 或者说 写O(n)的做法确实毒瘤. 这里给一个花20min就写完的非常好写的暴力. 容易想到枚举哪条边删掉 删掉之后考虑在哪两个点上 ...
- Python编程基础(一)编程语言是什么?编译型语言和解释型语言的区别|Python是什么?
编程语言是什么? 其实,程序指的就是一系列指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令. 虽然借助 Siri(Apple).Google Now(An ...