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

有时候学习如何应用第三方库是非常重要的,因为我们不用再自己重复造轮子,在这里,我们就把原先利用重力感应来操控飞机改为用游戏摇杆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. oracle 导出空表问题

    select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0

  2. diogo谈框,仿prompt()方法布局

    展示效果: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  3. HDU 1009 FatMouse' Trade(简单贪心)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1009 FatMouse' Trade Time Limit: 2000/1000 MS (Java/O ...

  4. TCP Flow Control and Data Transfer

    TCP Flow Control TCP Data Transfer Selective Repeat ARQ with Positive ACK Window slides a byte basis ...

  5. 【最新】LuaJIT 32/64 位字节码,从编译到使用全纪录

    网上关于 LuaJIT 的讨论,已经显得有些陈旧.如果你对 LuaJIT 编译 Lua 源文件为具体的 32位或64位字节码,极其具体使用感兴趣的话,不妨快速读一下这篇文章.此文章针对尝试在 iOS ...

  6. vsCode中误删了文件,教你怎么恢复

      不要慌!下面开始帮你找到,很简单!

  7. 卡常三连(快读快写+re)

    快读: inline int in() { char ch; ; '))); a*=;a+=ch-'; ,a+=ch-'; return a; } 快写: inline void out(int a) ...

  8. 外键参数 onupdate,ondelete等(cascade,no adcion,set null,restrict)

    MySQL外键约束On Delete.On Update各取值的含义 先看On Delete属性,可能取值如上图为:No Action, Cascade,Set Null, Restrict属性. 当 ...

  9. 如何理解Hibernate的持久化?

    学习Hibernate,必须要理解什么是持久化?结合了一下网上的各位大佬的观点和自己的理解: 持久化概念 持久化是将程序数据在持久状态和瞬时状态间转换的机制.通俗的讲,就是瞬时数据(比如内存中的数据, ...

  10. 【tp5.1】通过PHPExcel实现导入excel表格

    1.上github下载PHPExcel,链接:https://github.com/PHPOffice/PHPExcel 2.下载解压后,将Classes改名为PHPExcel如图 3.将文件夹复制到 ...