当我的玩家遇到一个物体时,我有一些碰撞检测工作。但这只适用于我的玩家x& y坐标击中了我的标记(这是我角色的中心)。
是否会使一个方法返回玩家纹理覆盖的所有坐标的向量,以及实现此方法的最佳方法是什么?
这是在c ++中创建自上而下的游戏
答案 0 :(得分:0)
有很多方法可以做到,最简单的可能是(取决于你使用类等)。 这是最简单的,但没有接近最好的,或者实际上非常好。这种方式意味着将“标记”更改为矩形的左下角。
void collisions()
{
//check if the x-coord is between the furthest left and furthest right x coords
if(rect.Getx() > someObject.Getx() && rect.Getx() < someObject.Getx() + someObject.GetWidth())
{
rect.SetMoveSpeed(0);
}
if(rect.Gety() > someObject.Gety() && rect.Gety() < someObject.Gety() + someObject.GetHeight())
{
rect.setMoveSpeed(0);
}
}
然后,您必须在不发生碰撞时将移动速度设置为正常。如果再次设置移动速度,则可以在每个之后使用else完成。这是一个快速修复,不建议用于您计划在任何地方分发的游戏。