Cocos2d-x PhysicsContact对象参考

Cocos2d-x PhysicsContact Object Reference

本文关键字:参考 对象 PhysicsContact Cocos2d-x      更新时间:2023-10-16

我正试图在Cocos2d-x中用C++制作一个视频游戏,但我在PhysicContact方面遇到了问题。

在我的游戏场景中,我有一个联系人侦听器,用于检查与类Item的角色和对象的PhysicBody的冲突。这一切都很好,但现在我想识别哪个对象发生了碰撞,因为我想调用对象类的一个名为getThrow()的方法。

class Item : public cocos2d::Layer
{
public:
	Sprite* itemArt;
	int itemType;
	PhysicsBody* itemCollider;
	void createArt(int type);
	void getThrow();
	Item(int type);
};

我在PhysicContact信息中尝试过,首先我获得了对象PhysicBody,然后是它的Node,但通过此操作,我只获得了对象的Sprite,此时我不知道如何到达对象以调用他的方法。

bool Level0::onContactBegin(PhysicsContact &contact)
{
	auto bodyA = contact.getShapeA()->getBody()->getNode();
	auto bodyB = contact.getShapeB()->getBody()->getNode();
    //HERE IS WHERE I WANT TO RUN bodyB->getThrow()
	return true;
}

我也尝试过使用getUserData()和getUserObject(),但我不知道如何使用对象指针调用方法。

我不知道我是不是做错了什么,但我很感激你的回答。

提前感谢!(如果需要更多细节,请告诉我,我是这个大社区的新手)

您需要这样做:

((Item*) b->getNode())->getThrow();