修复矩形碰撞判断
This commit is contained in:
parent
3e31a3af55
commit
d2e083c5ca
|
|
@ -12,7 +12,8 @@ RectNode::~RectNode()
|
|||
|
||||
bool RectNode::isCollisionWith(RectNode * rectNode) const
|
||||
{
|
||||
return IntersectRect(NULL, &m_Rect, &rectNode->m_Rect);
|
||||
static CRect rt;
|
||||
return IntersectRect(&rt, &m_Rect, &rectNode->m_Rect);
|
||||
}
|
||||
|
||||
bool RectNode::isPointIn(CPoint p) const
|
||||
|
|
|
|||
|
|
@ -60,7 +60,8 @@ void Sprite::setImage(Image * image)
|
|||
|
||||
bool Sprite::isCollisionWith(Sprite * sprite)
|
||||
{
|
||||
return IntersectRect(new CRect(), &getRect(), &sprite->getRect());
|
||||
static CRect rt;
|
||||
return IntersectRect(&rt, &getRect(), &sprite->getRect());
|
||||
}
|
||||
|
||||
void Sprite::addAction(Action * action)
|
||||
|
|
|
|||
|
|
@ -564,6 +564,19 @@ public:
|
|||
// Çå¿ÕËùÓÐ×Ó½Úµã
|
||||
void clearAllChildren();
|
||||
|
||||
// 设置节点横坐标
|
||||
virtual void setX(int x) override;
|
||||
// 设置节点纵坐标
|
||||
virtual void setY(int y) override;
|
||||
// 设置节点坐标
|
||||
virtual void setPos(int x, int y) override;
|
||||
// 设置节点坐标
|
||||
virtual void setPos(CPoint p) override;
|
||||
// 移动节点
|
||||
virtual void move(int x, int y) override;
|
||||
// 移动节点
|
||||
virtual void move(CVector v) override;
|
||||
|
||||
protected:
|
||||
std::vector<Node*> m_vChildren;
|
||||
|
||||
|
|
@ -598,33 +611,58 @@ public:
|
|||
RectNode();
|
||||
~RectNode();
|
||||
|
||||
// 判断两节点是否碰撞
|
||||
virtual bool isCollisionWith(RectNode * rectNode) const;
|
||||
// 判断点是否在节点内
|
||||
virtual bool isPointIn(CPoint p) const;
|
||||
|
||||
virtual void setWindowCenterX();
|
||||
virtual void setWindowCenterY();
|
||||
// 设置节点在窗口居中
|
||||
virtual void setWindowCenter();
|
||||
// 设置节点在窗口横向居中
|
||||
virtual void setWindowCenterX();
|
||||
// 设置节点在窗口纵向居中
|
||||
virtual void setWindowCenterY();
|
||||
|
||||
// 获取节点横坐标
|
||||
virtual int getX() const override;
|
||||
// 获取节点纵坐标
|
||||
virtual int getY() const override;
|
||||
// 获取节点坐标
|
||||
virtual CPoint getPos() const override;
|
||||
// 获取节点宽度
|
||||
virtual int getWidth() const;
|
||||
// 获取节点高度
|
||||
virtual int getHeight() const;
|
||||
// 获取节点大小
|
||||
virtual CSize getSize() const;
|
||||
// 获取节点所在的矩形
|
||||
virtual CRect getRect() const;
|
||||
|
||||
// 设置节点横坐标
|
||||
virtual void setX(int x) override;
|
||||
// 设置节点纵坐标
|
||||
virtual void setY(int y) override;
|
||||
// 设置节点坐标
|
||||
virtual void setPos(int x, int y) override;
|
||||
// 设置节点坐标
|
||||
virtual void setPos(CPoint p) override;
|
||||
// 移动节点
|
||||
virtual void move(int x, int y) override;
|
||||
// 移动节点
|
||||
virtual void move(CVector v) override;
|
||||
// 设置节点宽度
|
||||
virtual void setWidth(int width);
|
||||
// 设置节点高度
|
||||
virtual void setHeight(int height);
|
||||
// 设置节点大小
|
||||
virtual void setSize(int width, int height);
|
||||
// 设置节点大小
|
||||
virtual void setSize(CSize size);
|
||||
// 设置节点所在的矩形
|
||||
virtual void setRect(int x1, int y1, int x2, int y2);
|
||||
// 设置节点所在的矩形
|
||||
virtual void setRect(CPoint leftTop, CPoint rightBottom);
|
||||
// 设置节点所在的矩形
|
||||
virtual void setRect(CRect rect);
|
||||
|
||||
protected:
|
||||
|
|
|
|||
Loading…
Reference in New Issue