diff --git a/core/Collider/Collision.cpp b/core/Collider/Collision.cpp index 97df57b4..777ce69c 100644 --- a/core/Collider/Collision.cpp +++ b/core/Collider/Collision.cpp @@ -59,6 +59,20 @@ e2d::Node * e2d::Collision::getPassiveNode() return s_pPassiveNode; } +bool e2d::Collision::isCausedBy(const String & name1, const String & name2) +{ + String activeName = s_pActiveNode->getName(); + String passiveName = s_pPassiveNode->getName(); + return (activeName == name1 && passiveName == name2) || + (activeName == name2 && passiveName == name1); +} + +bool e2d::Collision::isCausedBy(Node * node1, Node * node2) +{ + return (s_pActiveNode == node1 && s_pPassiveNode == node2) || + (s_pActiveNode == node2 && s_pPassiveNode == node1); +} + e2d::Node* e2d::Collision::isCausedBy(Node * node) { if (s_pActiveNode == node) diff --git a/core/e2dcollider.h b/core/e2dcollider.h index e063bbc1..515b036b 100644 --- a/core/e2dcollider.h +++ b/core/e2dcollider.h @@ -46,18 +46,30 @@ public: // 获取碰撞发生时的被动体 static Node * getPassiveNode(); - // 判断碰撞是否由该节点引发 - // 如果是,返回与其相撞的节点指针,否则返回空 - static Node * isCausedBy( - Node * node + // 判断发生碰撞的节点名称是否相同 + static bool isCausedBy( + const String& name1, + const String& name2 ); - // 判断发生碰撞的节点名称是否相同 + // 判断两物体是否发生碰撞 + static bool isCausedBy( + Node * node1, + Node * node2 + ); + + // 判断发生碰撞的任意一方名称是否相同 // 若相同,返回其指针,否则返回空 static Node * isCausedBy( const String& name ); + // 判断物体是否发生碰撞 + // 如果是,返回与其相撞的节点指针,否则返回空 + static Node * isCausedBy( + Node * node + ); + // 开启或关闭物体碰撞监听功能(默认关闭) static void setEnable( bool enable