### 工欲善其事,必先利其器

有时候学习如何应用第三方库是非常重要的,因为我们不用再自己重复造轮子,在这里,我们就把原先利用重力感应来操控飞机改为用游戏摇杆joystick来操控,具体的操作如下:
```
// 声明游戏摇杆;
private var joystick:AnalogJoystick! // 游戏摇杆;
```
> 创建函数,新建游戏摇杆节点,并添加到GameScene中
```
//MARK:-// 加入游戏手柄
func createJoyStick(){
joystick = AnalogJoystick(diameter: CGFloat(250.0)) // 摇杆直径
joystick.stick.image = UIImage(named: "jStick") // 摇杆图
joystick.substrate.image = UIImage(named: "jSubstrate") // 摇杆背景图
joystick.zPosition = 1
joystick.position = CGPoint(x: -380.0, y: -720.0)
self.addChild(joystick)
joystick.alpha = 0.8
// 操控刚开始
joystick.beginHandler = { [unowned self] in
guard let sprite = self.playerNode else {
return
}
print("begin",sprite);
}
// 追踪操控
joystick.trackingHandler = {[unowned self] data in
guard let sprite = self.playerNode else {
return
}
let x = data.velocity.x * 0.12
let y = data.velocity.y * 0.12
let xPos = sprite.position.x + x
let yPos = sprite.position.y + y
sprite.position = CGPoint(x: xPos, y: yPos) // 更新飞机位置
//sprite.zRotation = data.angular // 飞机角度转向;
}
// 停止摇杆时;
joystick.stopHandler = { [unowned self] in
guard let sprite = self.playerNode else {
return
}
print("stop",sprite);
}
}
```
>在 override func didMove(to view: SKView) {}内加入摇杆函数
```
// 游戏手柄开始
override func didMove(to view: SKView) {
createJoyStick()
}
```
只需要上面这几步,就可以添加酷酷的游戏摇杆了,就这么简单!!!

游戏教学:http://www.iFIERO.com
源码传送门:https://github.com/apiapia/SpaceBattleSpriteKitGame

SpriteKit手机游戏摇杆JoyStick的使用 -- by iFIERO游戏开发教程的更多相关文章

  1. 【转载】Unity3D研究院之IOS自定义游戏摇杆与飞机平滑的移动

    移动开发游戏中使用到的触摸游戏摇杆在iPhone上是非常普遍的,毕竟是全触摸屏手机,今天MOMO 通过一个小例子和大家讨论Unity3D 中如何自定义一个漂亮的全触摸游戏摇杆.        值得高兴 ...

  2. Unity手游之路<六>游戏摇杆之Easy Touch 3教程

    之前已经介绍过Unity自带的摇杆Joystick,它用起来很简单.但是它也存在很多局限,不能全部满足普通mmo手游的一些需求,例如:要能方便地更好素材:能指定在某个区域显示,或者只有在该区域触摸时才 ...

  3. 斗牛app上架应用宝、牛牛手机游戏推广、百人牛牛app应用开发、棋牌游戏上传、手游APP优化

    联系QQ:305-710439斗牛app上架应用宝.牛牛手机游戏推广.百人牛牛app应用开发.棋牌游戏上传.手游APP优化 iOS开发iPhone/iPad平台安卓手机软件开发机型覆盖范围 超过113 ...

  4. Unity手游之路游戏摇杆之Easy Touch 3教程

    之前已经介绍过Unity自带的摇杆Joystick,它用起来很简单.但是它也存在很多局限,不能全部满足普通mmo手游的一些需求,例如:要能方便地更好素材:能指定在某个区域显示,或者只有在该区域触摸时才 ...

  5. Unity2017 经典游戏开发教程 算法分析与实现 (张帆 著)

    https://meta.box.lenovo.com/link/view/82c451b41ce34e81a4b34cb46747d3d5 第1章 熟悉Unity软件的操作 第2章 打地鼠 (已看) ...

  6. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  7. 【读书笔记《Android游戏编程之从零开始》】16.游戏开发基础(动画)

    1. Animation动画   在Android 中,系统提供了动画类 Animation ,其中又分为四种动画效果: ● AlphaAnimation:透明度渐变动画 ● ScaleAnimati ...

  8. 【读书笔记《Android游戏编程之从零开始》】15.游戏开发基础(剪切区域)

    剪切区域也称为可视区域,是由画布进行设置的:它指的是在画布上设置一块区域,当画布一旦设置了可视区域,那么除此区域外,绘制的任何内容都将看不到:可视区域可以是圆形.矩形等等. 画布提供了三种设置可视区域 ...

  9. 【读书笔记《Android游戏编程之从零开始》】14.游戏开发基础(Bitmap 位图的渲染与操作)

    Bitmap 是图形类,Android 系统支持的图片格式有 png.jpg.bmp 等. 对位图操作在游戏中是很重要的知识点,比如游戏中需要两张除了大小之外其他完全相同的图,那么如果会对位图进行缩放 ...

随机推荐

  1. Linux下安装Qt5.6.1

    我的环境:CentOS 6.7  64位. 1.下载Qt: Qt版本有很多,自己比较菜,希望安装的过程越简单越好,感觉比较新的版本会好安装一些,5.4版本还要更新 /usr/lib64/libstdc ...

  2. 解决IntelliJ IDEA控制台输出中文乱码问题

    一.原因: windows下的本地编码(GBK) ,在idea 整合的 maven中使得默认vm 的编码是utf-8.所以出现控制台乱码.tomcat设置的utf-8也会与window设置的gbk冲突 ...

  3. javaWeb中怎么获取提交表单里面的值

    在javaWeb中如何获得html文件中的表单里面的值? <!DOCTYPE html> <html> <head> <meta charset=" ...

  4. Jmeter--调度器配置

    Jmeter的线程组设置里有一个调配器设置,用于设置该线程组下脚本执行的开始时间.结束时间.持续时间及启动延迟时间.当需要半夜执行性能测试时会用到这个功能. ps:设置调度器配置,需要将前面的循环次数 ...

  5. jquery实现顶部浮动效果

    示例: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <tit ...

  6. Objective-C 中的 assign, copy,retain,strong,weak 详解

    在IOS开发中,经常会使用   @property(nonatomic,copy)NSString * name;   语句来快速设置set get 方法,在此依次说明atomic .nonatomi ...

  7. 20181030noip模拟赛T1

    YY的矩阵 YY有一个大矩阵(N*M), 矩阵的每个格子里都有一个整数权值W[i,j](1<=i<=M,1<=j<=N) 对于这个矩阵YY会有P次询问,每次询问这个大矩阵的一个 ...

  8. Linux中文件函数(二)

    一.link.linkat.unlink.unlinkat.remove函数 创建一个指向现有文件的链接的方法是使用link函数或linkat函数.函数的原型为: #include <unist ...

  9. python打印99乘法表

    代码如下: print(XXX,end="\t") #表示打印不换行 附带python部分转义字符:

  10. Plugin 'InnoDB' registration as a STORAGE ENGINE failed

    今天在安装mysql时遇到了mysql服务打不开的的情况,通过在cmd中输入MySQL --console,显示错误信息,得到如下情况. 原因是InnoDB初始化异常,也就是是说,卸载mysql的时候 ...