| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | /******************************************************************** *  Nomes: Gabriel Capella                       Números USP: 8962078  *         João Herique Luciano                               8535957 *  *  Tarefa:    RedCore - EP2 MAC0463 *  Arquivo:   Ball.cpp *  Descrição: Classe para auxiliar na criação da bola no jogo. ********************************************************************/ #include "Ball.h"#include "params.h"#include "SimpleAudioEngine.h"USING_NS_CC;bool Ball::init() {    ball_draw = DrawNode::create();    ball_draw->drawDot(Vec2(0, 0), BALL_SIZE, Color4F(COLOR_grey));    addChild(ball_draw);        superball_draw = DrawNode::create();    superball_draw->drawDot(Vec2(0, 0), BALL_SIZE, Color4F(COLOR_orange));    addChild(superball_draw);        auto material = PHYSICSBODY_MATERIAL_DEFAULT;    material.density = 0.0f;    material.restitution = 1.005f;    material.friction = 0.0f;        auto physicsBody = PhysicsBody::createCircle(BALL_SIZE, material);    physicsBody->setGravityEnable(false);    physicsBody->setVelocity(Vec2(0,0));    physicsBody->setLinearDamping(0.0);    physicsBody->setMass(1000.0f);        addComponent(physicsBody);    setTag(BALL_TAG);        resetNormalball();        return true;}void Ball::throwBall () {    float ang = CC_DEGREES_TO_RADIANS(rand_minus1_1() * THROW_ANG);    float x = sinf(ang) * INITIAL_SPEED;    float y = cosf(ang) * INITIAL_SPEED;    this->getPhysicsBody()->setVelocity(Vec2(x, y));}void Ball::setSuperball() {    superball = true;    ball_draw->setVisible(false);    superball_draw->setVisible(true);}void Ball::resetNormalball() {    superball = false;    ball_draw->setVisible(true);    superball_draw->setVisible(false);}void Ball::setPosition(float x, float y) {    Node::setPosition(x, y);    auto physicsBody = getPhysicsBody();    physicsBody->setContactTestBitmask(0xFFFFFFFF);    physicsBody->setGroup(-5);}
 |