PuzzleSDK
Ball类 参考

#include <Ball.h>

+ 类 Ball 继承关系图:
+ Ball 的协作图:

Public 成员函数

 Ball ()
 
virtual ~Ball ()
 
float radius ()
 
void move (float delta)
 
void collideWithPaddle (Paddle *paddle)
 
void setVelocity (cocos2d::Vec2 velocity)
 
cocos2d::Vec2 getVelocity ()
 

静态 Public 成员函数

static BallballWithTexture (cocos2d::Texture2D *aTexture)
 

Private 属性

cocos2d::Vec2 _velocity
 

详细描述

在文件 Ball.h32 行定义.

构造及析构函数说明

◆ Ball()

Ball::Ball ( )

在文件 Ball.cpp31 行定义.

32{
33}

被这些函数引用 ballWithTexture().

+ 这是这个函数的调用关系图:

◆ ~Ball()

Ball::~Ball ( )
virtual

在文件 Ball.cpp35 行定义.

36{
37}

成员函数说明

◆ ballWithTexture()

Ball * Ball::ballWithTexture ( cocos2d::Texture2D *  aTexture)
static

在文件 Ball.cpp44 行定义.

45{
46 Ball* pBall = new (std::nothrow) Ball();
47 pBall->initWithTexture(aTexture);
48 pBall->autorelease();
49
50 return pBall;
51}
Definition: Ball.h:33
Ball()
Definition: Ball.cpp:31

引用了 Ball().

被这些函数引用 PongLayer::PongLayer().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ collideWithPaddle()

void Ball::collideWithPaddle ( Paddle paddle)

在文件 Ball.cpp69 行定义.

70{
71 auto paddleRect = paddle->getRect();
72 paddleRect.origin.x += paddle->getPosition().x;
73 paddleRect.origin.y += paddle->getPosition().y;
74
75 float lowY = paddleRect.getMinY();
76 float midY = paddleRect.getMidY();
77 float highY = paddleRect.getMaxY();
78
79 float leftX = paddleRect.getMinX();
80 float rightX = paddleRect.getMaxX();
81
82 if (getPosition().x > leftX && getPosition().x < rightX) {
83
84 bool hit = false;
85 float angleOffset = 0.0f;
86
87 if (getPosition().y > midY && getPosition().y <= highY + radius())
88 {
89 setPosition(getPosition().x, highY + radius());
90 hit = true;
91 angleOffset = (float)M_PI / 2;
92 }
93 else if (getPosition().y < midY && getPosition().y >= lowY - radius())
94 {
95 setPosition(getPosition().x, lowY - radius());
96 hit = true;
97 angleOffset = -(float)M_PI / 2;
98 }
99
100 if (hit)
101 {
102 float hitAngle = (paddle->getPosition() - getPosition()).getAngle() + angleOffset;
103
104 float scalarVelocity = _velocity.getLength() * 1.05f;
105 float velocityAngle = -_velocity.getAngle() + 0.5f * hitAngle;
106
107 _velocity = Vec2::forAngle(velocityAngle) * scalarVelocity;
108 }
109 }
110}
float radius()
Definition: Ball.cpp:39
cocos2d::Vec2 _velocity
Definition: Ball.h:34
cocos2d::Rect getRect()
Definition: Paddle.cpp:37

引用了 _velocity, Paddle::getRect() , 以及 radius().

被这些函数引用 PongLayer::doStep().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ getVelocity()

cocos2d::Vec2 Ball::getVelocity ( )
inline

在文件 Ball.h48 行定义.

48{return _velocity;}

引用了 _velocity.

◆ move()

void Ball::move ( float  delta)

在文件 Ball.cpp53 行定义.

54{
55 this->setPosition(getPosition() + _velocity * delta);
56
57 if (getPosition().x > VisibleRect::right().x - radius())
58 {
59 setPosition(VisibleRect::right().x - radius(), getPosition().y);
60 _velocity.x *= -1;
61 }
62 else if (getPosition().x < VisibleRect::left().x + radius())
63 {
64 setPosition(VisibleRect::left().x + radius(), getPosition().y);
65 _velocity.x *= -1;
66 }
67}
static cocos2d::Vec2 left()
Definition: VisibleRect.cpp:45
static cocos2d::Vec2 right()
Definition: VisibleRect.cpp:51

引用了 _velocity, VisibleRect::left(), radius() , 以及 VisibleRect::right().

被这些函数引用 PongLayer::doStep().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ radius()

float Ball::radius ( )

在文件 Ball.cpp39 行定义.

40{
41 return getTexture()->getContentSize().width / 2;
42}

被这些函数引用 collideWithPaddle(), PongLayer::doStep() , 以及 move().

+ 这是这个函数的调用关系图:

◆ setVelocity()

void Ball::setVelocity ( cocos2d::Vec2  velocity)
inline

在文件 Ball.h47 行定义.

47{_velocity = velocity;}

引用了 _velocity.

被这些函数引用 PongLayer::PongLayer() , 以及 PongLayer::resetAndScoreBallForPlayer().

+ 这是这个函数的调用关系图:

类成员变量说明

◆ _velocity

cocos2d::Vec2 Ball::_velocity
private

在文件 Ball.h34 行定义.

被这些函数引用 collideWithPaddle(), getVelocity(), move() , 以及 setVelocity().


该类的文档由以下文件生成: