cs193P assignmentV 问题1

又停了一段时间,再次开始。

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

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

思路是在 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的速度实现,下一步制作重启游戏的模块

晚安

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值