From 9bd8229b3f1618611489e50cdaf202a15be413b8 Mon Sep 17 00:00:00 2001 From: Nomango <569629550@qq.com> Date: Sat, 26 May 2018 14:06:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=89=A9=E4=BD=93=E7=A2=B0?= =?UTF-8?q?=E6=92=9E=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/Collider/Collision.cpp | 14 ++++++++++++++ core/e2dcollider.h | 22 +++++++++++++++++----- 2 files changed, 31 insertions(+), 5 deletions(-) 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