Cocos2d-x3.8.1制作愤怒的小鸟

发表于2018-03-19
评论0 2.4k浏览
Cocos2d-x在html5游戏开发、Android游戏开发都有很广泛的使用。下面就以愤怒的小鸟的制作教程为例,给大家介绍Cocos2d-x引擎的使用。

使用Cocostudio对拉弓动作进行处理,设计很重要,设计的好可以事半功倍

Cocostudio设计如下:

对主角bird可以作为右绳子的子节点
并且各个节点的顺序我已经排好,这是我个人认为较好的排布方式

接下来打包发布为.csb文件,加载方式点击链接点击打开链接

接下来在代码实现绳子的旋转和拉升动作
void HelloWorld::ropeUP()
{
//设置绳子旋转角度与伸长长度
//将子节点坐标转化为世界坐标
auto bird_point=bird->convertToWorldSpace(bird->getPosition());
{
//使用三角函数获取旋转角度
auto right_rope_angle=atan2((right_rope_point.y-point_moved.y),(right_rope_point.x-point_moved.x))*(float)180.0/PI;
right_rope->runAction(RotateTo::create(0.001f,-right_rope_angle));
auto left_rope_angle=atan2((left_rope_point.y-bird_point.y),(left_rope_point.x-bird_point.x))*(float)180.0/PI;
left_rope->runAction(RotateTo::create(0.001f,-left_rope_angle));
auto _y=(right_rope_point.y-point_moved.y)*(right_rope_point.y-point_moved.y);
auto _x=(right_rope_point.x-point_moved.x)*(right_rope_point.x-point_moved.x);
auto right_rope_length=sqrt(_x+_y);
auto _y_left=(left_rope_point.y-bird_point.y)*(left_rope_point.y-bird_point.y);
auto _x_left=(left_rope_point.x-bird_point.x)*(left_rope_point.x-bird_point.x);
auto left_rope_length=sqrt(_x_left+_y_left);
if (right_rope_length<=MAXLENGTH)
{
right_rope->setSize(Size(right_rope_length,11));
}
if (right_rope_length<=MAXLENGTH/2)
{
left_rope->setSize(Size(left_rope_length*1.1,11));
}
else
{
left_rope->setSize(Size(left_rope_length*1.6,11));
}

弹射方向和弹射速度需要
ropeLength=right_rope_length;
width=(right_rope_point.x+left_rope_point.x)/2-bird->convertToWorldSpace(bird->getPosition()).x;
height=(left_rope_point.y+right_rope_point.y)/2-bird->convertToWorldSpace(bird->getPosition()).y;
}
}
//然后设置bird为physicsBody
//当bird发射时给钢体一个速度,可以模拟抛物线运动
this->getPhysicsBody()->setVelocity(vec2);

最后障碍物
在Cocostudio设置基础容器,具体操作方式参考CocosStudio基础容器的加载和使用

注:在制作这个游戏过程中可能需要使用的两个知识:
1、将子节点坐标转化为世界坐标:
auto bird_point=bird->convertToWorldSpace(bird->getPosition());

2、创建不同block时,需要创建不规则钢体,这时需要使用Polygon多边形body
以下用三角形为例:
Vec2 points[]={Vec2(-40,-40),Vec2(0,40),Vec2(40,-40)};
node->setPhysicsBody(PhysicsBody::createPolygon(points,3));

设置形状是以shape中心点为Vec2(0,0),从左到右的顶点组成的数组作为函数第一个实参,第二个参数为顶点个数。但是事实发现该做法比较困恼,这时可以使用physicsEdit物理编辑器制作physicsBody,发布打包有个json文件,打开后会发现里面的参数有你需要的顶点坐标。

实现效果图如下:

来自:http://blog.csdn.net/qq_33747722/article/details/52744340

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引