所以我正在用SDL制作滑雪板游戏,我在障碍类中有一个检查碰撞的功能。当障碍物调用此功能时,如果玩家与其发生碰撞,我将玩家类的collidedObject设置为与其碰撞的对象。代码如下所示:
void Obstacle::checkCollision()
{
// Check for collision
// If player collided
player.collidedObject = theObjectThatCalledThisFunction;
}
但我不知道如何获得调用该函数的对象。有帮助吗?我真的不知道要搜索什么,我尝试搜索的内容并没有多大帮助。 感谢。
答案 0 :(得分:1)
this
指向调用成员函数的对象。因此,如果player.collidedObject
的类型为Obstacle
,那么您可以编写
player.collidedObject = *this;
答案 1 :(得分:0)
只是一个想法,但你更有意义在障碍类之外的某个地方检查冲突。类似的东西:
bool Obstacle::checkCollision(Player &player) {
//collision test here
return collisionResult;
}
PlayerSystem::collisionTest() {
foreach(Obstacle : ObstaclesCloseBy) {
if(obstacle->checkCollision(player)
player.rollLikeABarrelDownTheSlope(); //or whatever
}
}