您的位置:首页 > 其它

cs193P assignmentV 问题1

2015-08-25 00:32 225 查看
又停了一段时间,再次开始。

生命中有了些神奇的变化,希望这次可以不同。

上次作业进行到了挡板移动和反弹正常,今天主要做触底结束的部分。

思路是在 gameView 的底部加一个高度为1的方框,参加碰撞。将UICollisionBehaviorDelegate设置为gameBehavior,通过代理检测碰撞,比较identifier相同则停止游戏。

第一步:上个版本对于游戏内尺寸的计算结构混乱,重新写了这部分,最初想法定义一个结构体,结构体内部有 gameView 的高度,宽度等信息,写完后发现获取不了 ScoreView对象,查阅资料发现 swift 目前还不支持嵌套对象获取外部对象的数据,于是去掉了最外层结构体,不知道还有没有更好的选择。

第二步:增加底部的碰撞体,因为碰撞代理在 behavior 中,所以考虑碰撞的 identifier 也放在 behavior 中,通过    func addBottom(path:
UIBezierPath)调用,behavior 管理 identifier。

第三布:使用代理函数

collisionBehavior(behavior: UICollisionBehavior, beganContactForItem item:
UIDynamicItem, withBoundaryIdentifier identifier:
NSCopying, atPoint p: CGPoint) ,执行后遇到错误,方块碰到墙壁后,墙壁的 identifier 为 nil,但是返回的 NSCopying 不支持 nil 比较,后来增加一次复制,var id :NSCopying? = identifier后解决。
第四步:暂停游戏
反向设置 ball的速度实现,下一步制作重启游戏的模块
晚安
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: