下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

教你如何实现Cocos2D-Android中图片围绕点做圆周运动

作者:课课家教育     来源: http://www.kokojia.com点击数:1465发布时间: 2019-03-25 10:02:24

标签: Cocos2D-Android游戏开发Cocos2D-Android游戏开发

  相信各位同学偶尔会看到有些手机游戏中会出项一张图片围着某个点作圆周运动,本篇教程将教你如何实现Cocos2D-Android中图片围绕点做圆周运动 。

  实现效果:

教你如何实现Cocos2D-Android中图片围绕点做圆周运动 _Cocos2D-Android_游戏开发_Cocos2D-Android游戏开发_课课家

  具体代码

  publicclassCCRoundByextendsCCIntervalAction{

  booleanturn;//ForwardorReverseround

  floatstartAngle;//default

  floatradius;//Roundcircleradius

  CGPointcenter;//Roundcirclecenterpoint

  publicbooleanisTurn(){

   returnturn;

  }

  publicvoidsetTurn(booleanturn){

   this.turn=turn;

  }

  publicfloatgetStartAngle(){

   returnstartAngle;

  }

  publicvoidsetStartAngle(floatstartAngle){

   this.startAngle=startAngle;

  }

  publicfloatgetRadius(){

   returnradius;

  }

  publicvoidsetRadius(floatradius){

   this.radius=radius;

  }

  publicCGPointgetCenter(){

   returncenter;

  }

  publicvoidsetCenter(CGPointcenter){

   this.center=center;

  }

  /**createstheaction*/

  publicstaticCCRoundByaction(floatduration,booleana,CGPointpoint,floatr){

  returnnewCCRoundBy(duration,a,point,r);

  }

  /**initializestheaction*/

  protectedCCRoundBy(floatduration,booleana,CGPointpoint,floatr){

  super(duration);

  turn=a;

  radius=r;

  center=point;

  }

  @Override

  publicvoidstart(CCNodeaTarget){

  super.start(aTarget);

  startAngle=aTarget.getRotation();

  if(turn){

  ((CCNode)aTarget).setPosition(CGPoint.ccpAdd(center,CGPoint.ccp(-radius,0)));

  }

  else{

  ((CCNode)aTarget).setPosition(CGPoint.ccpAdd(center,CGPoint.ccp(radius,0)));

  }

  }

  @Override

  publicvoidupdate(floatt){

  //XXX:shallIadd%360

  floatrotate=(startAngle+360.0f*t);

  if(turn){

  rotate*=-1;

  }

  target.setRotation(rotate);

  floatfradian=(float)(rotate*Math.PI/180.0f);

  CGPointpos=CGPoint.ccp(center.x+radius*MathUtils.sin(fradian),

  center.y+radius*MathUtils.cos(fradian));

  target.setPosition(pos);

  }

  @Override

  publicCCIntervalActionreverse(){

  booleanresult=!turn;

  returnaction(duration,result,center,radius);

  }

  }

赞(15)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程