ITKeyword,专注技术干货聚合推荐

注册 | 登录

Swift游戏开发之俄罗斯方块:No.9 添加点击和移动事件

u011156012 分享于 2015-02-06

推荐:Swift游戏开发之俄罗斯方块:No.7 下落机制

上一章节我们完成了shape的建立,现在游戏里面的元素(blocks,shapes)都已经完成了,背景也搭好了(array2D),让我们开始制定游戏规则吧。首先就是需要让我们

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

本节内容过后,我们的程序运行起来将是这样的:

我们一步一步来,首先添加点击事件:

接触过iOS开发的应该对这些步骤不陌生,我们要添加UITapGestureDetectorview里面。

打开Main.storyboard,界面应该类似于下面这样


在右下角通过搜索找到 Tap Gesture Recognizer 然后把它拖入到GameViewControllerScene 里面


接下来打开Assistant Editor,界面看起来是这样的:


按住ctrl将Tap Gesture Recognizer 拖入到右侧的GameViewController


确保你的Connection类型是Action,Name 是 didTap, Type为UITapGestureRecognizer, 之后点击connect,在GameViewController类中应该会添加下面的代码:

 

这样当点击事件被识别的时候,这个函数将会被执行。接下来我们在这个界面右键点击Tap Gesture Recognizer,把outlets的delegate赋给Game View Controller 


就像给GameViewController添加swiftris代理一样,我们再添加上手势的代理吧


接下来运行我们的程序,看看点击屏幕以后,我们的俄罗斯方块能不能旋转。我们的程序应该是这样的:


接下来,我们还需要添加两个手势,添加的过程和Tap Gesture 一模一样。

推荐:Qt小游戏开发:俄罗斯方块

作为一个即将步入游戏行业的新人,手写经典小游戏是必备技能哦。 预览 由于录屏软件的问题,颜色和帧率与实际有所出入,不过不影响。 步骤 1 新建工程 建一个基

我们先来添加Pan,也就是移动,确保你的didPan函数和下面的一样:



#1 我们定义个panPointReference点来追踪pan手势的位置。

#2 我们把起始点位置记录下来,然后在#3中计算当前的位置有没有和起始点相差绝对值(abs)超过0.9个block,如果超过了,就执行移动命令

#4 可以通过velocityInView来判断手势的方向,正值是向右,负值是向左,然后我们把swiftris向对应的方向移动一格。并且把当前的位置设置成开始的位置,这样确保用户一次可以移动好几格。

但是我在后来玩游戏的过程中发现,很容易移动超过自己想象的位置,而且如果在后面的swipe动作中很容易出发pan,因为0.9个blocksize其实是很小的位置。不过这都不是问题,我们知道了原理,怎样调整就随意了!

接下来运行一下程序,看看是不是我们想象的那样定的吧


接下来我们来完成swipe手势,swipe就是我们移动的时候,方块可以直接快速沿着这个方向移动。重复同样的步骤建立Swipe Gesture Recognizer,name为didSwipe, 需要多一个步骤,如下图所示


确保swipe方向是down

接下来我们开始修改GameViewController


我们重新输入下#1#2中没有显示完全的代码

 func gestureRecognizer(gestureRecognizer: UIGestureRecognizer!, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer!) -> Bool {
         return true
     }

// #2
     func gestureRecognizer(gestureRecognizer: UIGestureRecognizer!, shouldBeRequiredToFailByGestureRecognizer otherGestureRecognizer: UIGestureRecognizer!) -> Bool {
         if let swipeRec = gestureRecognizer as? UISwipeGestureRecognizer {
             if let panRec = otherGestureRecognizer as? UIPanGestureRecognizer {
                 return false
             }
         } else if let panRec = gestureRecognizer as? UIPanGestureRecognizer {
             if let tapRec = otherGestureRecognizer as? UITapGestureRecognizer {
                 return true
             }
         }
         return false
     }

#1 部分允许我们的手势同时执行,当然,有些时候我们的手势可能会冲突,所以需要在做些调整

注意到在#2中 如果当前手势是swipe而panRec 手势是otherGestureRecognizer时,在我的代码里面需要return false, 因为我刚开始发现如果是return ture,那么swipe手势一直没法识别,因为它被pan覆盖掉了。而改成false后就正常了。这里算是原版教材俩面的第2 处错误。

大家也可以试试是不是这样的


推荐:java swing开发俄罗斯方块游戏

原文:java swing开发俄罗斯方块游戏 源代码下载地址:http://www.zuidaima.com/share/1550463573740544.htm 简单的俄罗斯方块游戏,可以读取记录  

本节内容过后,我们的程序运行起来将是这样的: 我们一步一步来,首先添加点击事件: 接触过iOS开发的应该对这些步骤不陌生,我们要添加UITapGestureDetector到view里面。 打开Main.storyboard

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。