捕鱼达人---自己封装版

     这是我自己根据《捕鱼达人》,用SurfaceView封装的一个DEMO,把点击屏幕大炮发射子弹,捕抓鱼的一些基本功能都已经实现,只是封装的可能不太好,借此与大家分亨一下,希望请大神们多指点一下。先看效果图:




JAVA代码的写法:

//点击了捕鱼区域,发射子弹
if(isDown){
isDown = false;
//发射子弹的间隔
long end = System.currentTimeMillis();
if(end -start_artilley<1500)return;
start_artilley = end;
//正切区域
float x = downX-mWidth/2;//在屏幕的一半范围内(把屏幕分成两块0,mWidth/2)
//高度区域
// float y = downY-(mHeight-artilley.getBitmap().getHeight()/2);
float y = downY-artilley.getY();//正切点

//根据点,测试正切的角
//弧度转换成角度
float angle = (float)Math.toDegrees(Math.atan2(x, -y));
//旋转角度的区间
if(angle>=-95&&angle<=95)
artilley.setAngle(angle);

//增加子弹
Bitmap bit = BitmapManager.getInstance().bullet[artilley.getCol()];
float x1 = artilley.getX()+(artilley.getW()-bit.getWidth())/2;
float y1 = artilley.getY()+(artilley.geth()-bit.getHeight())/2;
Bullet b = new Bullet(x1,y1,x1+bit.getWidth(),y1+bit.getHeight(),bit);
b.setAngle(artilley.getAngle());
bullets.add(b);
//增加渔网
bit = BitmapManager.getInstance().net[artilley.getCol()];
int rows = 5,cols=1;//行、列
float w = bit.getWidth();//宽
float h = bit.getHeight()/rows;//高
TiledSprite net = new TiledSprite(b.getX()+(b.getWidth()-w)/2,
b.getY(), 
b.getX()+(b.getWidth()-w)/2+bit.getWidth(),
b.getY()+h, bit, rows, cols);
net.setLoop(false);//循环播放帧动画
net.setAnim(true);//开启帧动画
net.setStartRowAndEndRow(0, rows-1);//绘制行帧动画的帧数
net.setFlag(true);//设置绘制行帧动画,还是绘制列动画
b.setNetPosition(downX, downY);//渔网的位置
b.setNet(net);//放入子弹
net = null;
bit = null;
b = null;
bit = null;
return;
}



更新子弹的位置:

//左边正常
double radian = Math.toRadians(Math.abs(b.getAngle()));
float x;
if(b.getAngle()>0)//左边屏幕
x= (float) Math.sin(radian)*-BULLET_SPEED;
else//右边屏幕
x= (float) Math.sin(radian)*BULLET_SPEED;

float y = (float) Math.cos(radian)*BULLET_SPEED;



cocos2d-x代码设置大炮的角度:



源码地址 :http://download.csdn.net/detail/util_c/6874637            


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值