Rob*_*ney 3 c++ collision-detection bounding-box sfml
我正在尝试为我的第一个SFML项目编写一个非常基本的游戏.它是一个带有关节臂的机器人,只能用手弹出气球.我遇到的问题是,检查是否夹击精灵与气球精灵相交时,返回true所有的时间,无论气球或机器人夹击的位置.我正在使用变换来放置机器人手臂的各个部分,这是我想到的问题,但我不知道为什么.我已经尝试在单独的程序中使用边界框碰撞,其中不使用变换并且它完美地工作.转换和检测代码如下.如果有人能向我解释这一点,我将不胜感激.我是SFML的新手,所以为我的无知道歉!
sf::Transform trBody;
trBody.translate(sBodyPos);
/////////////////////////////////////////////////
sf::Transform trArm1;
trArm1.translate(sArm1Pos);
sf::Transform rotArm1;
rotArm1.rotate(sArm1Rot);
sf::Transform TR1 = trBody*trArm1*rotArm1;
/////////////////////////////////////////////////
sf::Transform trArm2;
trArm2.translate(sArm2Pos);
sf::Transform rotArm2;
rotArm2.rotate(sArm2Rot);
sf::Transform TR2 = TR1*trArm2*rotArm2;
/////////////////////////////////////////////////
sf::Transform trPincer1;
trPincer1.translate(sPincer1Pos);
sf::Transform TR3 = TR2*trPincer1;
/////////////////////////////////////////////////
sf::Transform trPincer2;
trPincer2.translate(sPincer2Pos);
sf::Transform TR4 = TR2*trPincer2;
/////////////////////////////////////////////////
sf::Transform trBalloon1;
trBalloon1.translate(sBalloon1Pos);
if (sPincer1.getGlobalBounds().intersects(sBalloon1.getGlobalBounds())){
cout << "Bang" << endl;
ballOneHit = true;
}
// Clear screen
app.clear();
app.draw(sArm2, TR2);
app.draw(sPincer1, TR3);
app.draw(sPincer2, TR4);
app.draw(sArm1, TR1);
app.draw(sBody, trBody);
if (ballOneHit == false){
app.draw(sBalloon1, trBalloon1);
}
// Update the window
app.display();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3361 次 |
| 最近记录: |