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);
- }
|