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

//使用Cocostudio对拉弓动作进行处理

//设计很重要,设计的好可以事半功倍

//Cocostudio设计如下:

Cocos2d-x3.8.1制作愤怒的小鸟_第1张图片

//对主角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设置基础容器,具体操作方式点击链接点击打开链接



注:在制作这个游戏过程中可能需要使用的两个知识:

<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文件,

打开后会发现里面的参数有你需要的顶点坐标。


我本人简单的做了下 :


Cocos2d-x3.8.1制作愤怒的小鸟_第2张图片

Cocos2d-x3.8.1制作愤怒的小鸟_第3张图片


你可能感兴趣的:(Cocos2d-x3.8.1制作愤怒的小鸟)