我想在游標方向將速度向量應用于動態主體:
void Game::mousePressEvent(QMouseEvent *e){
double angle = atan2(realBall->GetPosition().y - e->pos().y(), realBall->GetPosition().x - e->pos().x());
realBall->SetLinearVelocity(b2Vec2(-cos(angle) * 50, -sin(angle) * 50));
}
但是動態體的方向不正確,所以我認為游標位置是錯誤的。
感謝您的幫助!
uj5u.com熱心網友回復:
首先,您必須知道,為了讓您的代碼作業,您的螢屏坐標和 box2d 的坐標必須匹配。請注意,如果您使用以像素為單位的螢屏坐標,則意味著一個像素的大小與 box2d 中的 1 米相匹配。但是讓我們假設您已經考慮了所有這些。那么我不建議您使用三角學進行計算。所以你很容易犯錯誤。在這種情況下,簡單的向量操作就足夠了:減法、縮放和歸一化向量。你可以試試這個:velocity = (cursor_position - real_ball_position).normalize().scale(50f)。在 box2d 中有一個用于向量運算的 b2Vec 類。您可以在檔案中詳細了解它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/368581.html
上一篇:列出從qt應用程式發出的所有信號
