33> Cocos Creator 虚拟摇杆样例
44
55![ GitHub package.json version] ( https://img.shields.io/github/package-json/v/YunYouJun/cocos-creator-joystick.svg?style=social )
6- [ ![ Cocos Creator version] ( https://img.shields.io/badge/Cocos_Creator-v2.2 .x-blue.svg?style=social )] ( https://www.cocos.com/creator )
6+ [ ![ Cocos Creator version] ( https://img.shields.io/badge/Cocos_Creator-v2.4 .x-blue.svg?style=social )] ( https://www.cocos.com/creator )
77![ GitHub top language] ( https://img.shields.io/github/languages/top/YunYouJun/cocos-creator-joystick.svg?style=social&logo=javascript )
88![ GitHub code size in bytes] ( https://img.shields.io/github/languages/code-size/YunYouJun/cocos-creator-joystick.svg?style=social&logo=visual-studio-code )
99
1010中文文档 | [ English Docs] ( ./README.en.md )
1111
1212在线预览: < https://yunyoujun.github.io/cocos-creator-joystick/ >
1313
14+ 最新版本已使用 TypeScript 重写,更友好的结构与注释。如果您想要查看纯 JavaScript 版本,请见旧版本 [ v0.0.2] ( https://github.com/YunYouJun/cocos-creator-joystick/releases/tag/v0.0.2 ) 。
15+
1416## 使用
1517
1618### 下载
1921
2022### 通过文件导入
2123
22- > Cocos Creator v2.2. x -> 文件 -> 资源导出... -> 选择 -> assets/demo.fire
23- > Cocos Creator v2.2. x -> 文件 -> 资源导入...
24+ > Cocos Creator v2.x -> 文件 -> 资源导出... -> 选择 -> assets/demo.fire
25+ > Cocos Creator v2.x -> 文件 -> 资源导入...
2426
2527### 通过 Git
2628
@@ -45,47 +47,37 @@ git clone https://github.com/YunYouJun/cocos-creator-joystick.git
4547- 触摸感应位置(自定义 Joystick 宽高)
4648 - [x] 全屏感应
4749 - [x] 半屏感应
50+ - 节点间解耦(只需要监听 Touch 事件,而无需挂载 Player 节点至 Joystick,可控制任意多个 Player)
4851
4952### 虚拟摇杆
5053
51- | 属性 | 类型 | 默认值 | 描述 | 可自定义 |
52- | ------------- | ---------------------------------------- | ------------------ | ------------------------ | -------- |
53- | joystickType | JoystickType.FIXED / JoystickType.FOLLOW | JoystickType.FIXED | 虚拟摇杆类型 | √ |
54- | player | cc.Node | - | 挂载要控制的玩家节点 | √ |
55- | playerPhysics | cc.Node | - | 挂载要控制的玩家物理节点 | √ |
56- | area | cc.Node | - | 摇杆触摸激活区域参考 | √ |
57- | ring | cc.Node | - | 摇杆背景节点 | √ |
58- | dot | cc.Node | - | 摇杆操纵点 | √ |
54+ | 属性 | 类型 | 默认值 | 描述 | 可自定义 |
55+ | ------------ | ---------------------------------------- | ------------------ | ------------ | -------- |
56+ | joystickType | JoystickType.FIXED / JoystickType.FOLLOW | JoystickType.FIXED | 虚拟摇杆类型 | √ |
57+ | ring | cc.Node | - | 摇杆背景节点 | √ |
58+ | dot | cc.Node | - | 摇杆操纵点 | √ |
5959
6060### 玩家
6161
62- | 属性 | 类型 | 默认值 | 描述 | 由虚拟摇杆控制 | 可自定义 |
63- | ----------- | -------------------------------------------------- | ----------------------- | ------------ | -------------- | -------- |
64- | moveDir | Vec2 | cc.v2(0, 1) // 竖直向上 | 初始移动方向 | √ | √ |
65- | \_ speedType | SpeedType.STOP / SpeedType.NORMAL / SpeedType.FAST | SpeedType.NORMAL | 速度类型 | √ | × |
66- | \_ moveSpeed | cc.Integer | 0 | 移动速度 | × | × |
67- | stopSpeed | cc.Integer | 0 | 停止时速度 | × | √ |
68- | normalSpeed | cc.Integer | 100 | 正常速度 | × | √ |
69- | fastSpeed | cc.Integer | 200 | 加快时速度 | × | √ |
62+ | 属性 | 类型 | 默认值 | 描述 | 由虚拟摇杆控制 | 可自定义 |
63+ | ----------- | -------------------------------------------------- | ----------------------- | ---------------- | -------------- | -------- |
64+ | rigidbody | boolean | false | 刚体(物理)模式 | × | x |
65+ | moveDir | Vec2 | cc.v2(0, 1) // 竖直向上 | 初始移动方向 | √ | √ |
66+ | \_ speedType | SpeedType.STOP / SpeedType.NORMAL / SpeedType.FAST | SpeedType.NORMAL | 速度类型 | √ | × |
67+ | \_ moveSpeed | cc.Integer | 0 | 移动速度 | × | × |
68+ | stopSpeed | cc.Integer | 0 | 停止时速度 | × | √ |
69+ | normalSpeed | cc.Integer | 100 | 正常速度 | × | √ |
70+ | fastSpeed | cc.Integer | 200 | 加快时速度 | × | √ |
7071
7172## 项目结构
7273
7374> 逻辑文件均位于 ` assets/script ` 目录下
7475
75- | 文件名 | 描述 | 功能 |
76- | ---------------- | ---------------- | -------------------------------------------------------------------------------------------- |
77- | Joystick.js | 虚拟摇杆脚本文件 | 存储 Joystick 主逻辑 |
78- | JoystickEnum.js | 虚拟摇杆枚举文件 | 存储摇杆类型定义、事件定义 |
79- | JoystickEvent.js | 虚拟摇杆事件类 | 存储摇杆事件管理器 |
80- | Player.js | 玩家脚本文件 | 可根据需求通过 JoystickEvent 监听 JoystickEnum.JoystickEventType。(可根据需要自行修改删除) |
81- | PlayerPhysics.js | 玩家脚本文件 | 可根据需求通过 JoystickEvent 监听 JoystickEnum.JoystickEventType。(可根据需要自行修改删除) |
82- | UI.js | UI | 提供在线预览页面,玩家切换摇杆类型功能。(不需要可直接删除) |
83-
84- ## 新特性
85-
86- - 节点间解耦
87- 通过 ` JoystickEvent.js ` 的观察者模式管理摇杆动作,需要知道摇杆操作动作的只需要监听事件,不需要暴露自己的节点给 ` Joystick.js ` 。
88- ` Joystick.js ` 只需要处理摇杆逻辑,假设有多个 player 需要知道摇杆的 touchStart,那么只需要监听 JoystickEnum.JoystickEventType.TOUCH_START 事件即可。
76+ | 文件名 | 描述 | 功能 |
77+ | ----------- | ---------------- | ------------------------------------------------------------ |
78+ | Joystick.js | 虚拟摇杆脚本文件 | 存储 Joystick 主逻辑 (包含一些类型定义与全局监听实例) |
79+ | Player.js | 玩家脚本文件 | 监听 Joystick 发射的事件(可根据需要自行修改删除) |
80+ | UI.js | UI | 提供在线预览页面,玩家切换摇杆类型功能。(不需要可直接删除) |
8981
9082## 其他
9183
@@ -109,6 +101,5 @@ npm run deploy
109101
110102### Todo
111103
112- - [ ] Write with TypeScript
113104- [ ] Keep half screen layout (now is fixed width)
114105- [ ] How about set dot as a child of ring?
0 commit comments