iOS动画实战之钓鱼小游戏实例代码-创新互联
前言
创新互联是一家专注于成都网站制作、成都做网站与策划设计,中山网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:中山等地区。中山做网站价格咨询:18982081108最近写了一款钓鱼小游戏,自己平时也没做过游戏,本来以为这种游戏要用cocos2d什么的实现,后来发现其实动画就可以实现很棒的效果,先看看效果图。
思维导图
首先我们看下思维导图,本游戏主要分为4大块,其中鱼的实现最为复杂
思维导图
项目结构
准备工作
首先将需要的图准备好,这个鱼其实就是一组图片,图片大小固定,每一帧位置变化,所以看起来 是一个上下游动的鱼。
单张图片
鱼钩模块
摆动动画
鱼钩的摆动范围是[M_PI/4.0,-M_PI/4.0] (垂直向下为0度,顺时针为正),这里利用了计时器进行角度的更改,计时器用的CADisplayLink,它是一个和屏幕刷新率一致的定时器,如果没有卡顿,每秒刷新次数是60次,本Demo很多计时器用的都是CADisplayLink。下面是鱼钩的主要代码(重点:1、设置锚点后重置frame,2、更改角度,3、旋转)。 其中定义了一个block将角度angle回传到FishingView界面计算鱼钩落到池塘的位置。
@property (nonatomic, strong) CADisplayLink *linkTimer; @property (nonatomic, assign) BOOL isReduce;//改变方向 @property (nonatomic, assign) CGFloat angle;//摆动的角度 - (void)initView{ [self setAnchorPoint:CGPointMake(0.5, 0) forView:self]; UIImageView *gouImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, self.frame.size.height - 35 , 30, 35)]; gouImageView.image = [UIImage imageNamed:@"fish_catcher_tong"]; [self addSubview:gouImageView]; UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake((self.frame.size.width - 3)/2.0, 0, 3, self.frame.size.height - 35)]; lineView.backgroundColor = HEXCOLOR(0x9e664a); [self addSubview:lineView]; // 创建一个对象计时器 _linkTimer = [CADisplayLink displayLinkWithTarget:self selector:@selector(hookMove)]; //启动这个link [_linkTimer addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; } //设置锚点后重新设置frame - (void) setAnchorPoint:(CGPoint)anchorpoint forView:(UIView *)view{ CGRect oldFrame = view.frame; view.layer.anchorPoint = anchorpoint; view.frame = oldFrame; } #pragma mark - 鱼钩摆动 - (void)hookMove{ if (self.isReduce){ _angle-=1.8*cos(1.5*_angle)*0.01;//计算角度,利用cos模拟上升过程中减慢,下降加快 if (_angle < -M_PI/180*45){ self.isReduce = NO; } }else { _angle+=1.8*cos(1.5*_angle)*0.01; if (_angle > M_PI/180*45){ self.isReduce = YES; } } if (self.angleBlock){ self.angleBlock(_angle); } // DLog(@"鱼钩角度%f",_angle); //旋转动画 self.transform = CGAffineTransformMakeRotation(_angle); }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享名称:iOS动画实战之钓鱼小游戏实例代码-创新互联
文章起源:http://scyanting.com/article/dhpcjs.html