私は2D戦略ゲームのために自家製のビューポートクラスを作成しました。 (マウスホイール付き)(矢印キーで)パンとズームは正常に動作しますが、私はあなたに詳細を惜しまますGoogle Maps or Supreme Commanderマウス(Googleマップなど)にズーム
のように私は、カーソルが置かれている場所に向けても家、にビューを希望しますどのようにズームが実装されているのか、私が使用している言語をどのように使うのか、これはすべて無関係です。重要なのは、ビューを表す矩形構造(x、y、w、h)を変更するズーム関数です。これまでのコードは次のようになります。
void zoom(float delta, float mouse_x, float mouse_y)
{
zoom += delta;
view.w = window.w/zoom;
view.h = window.h/zoom;
// view.x = ???
// view.y = ???
}
誰かがそれを示唆する前に、以下が仕事ではないます:私はスマイリーフェイスに向けてズームを試みるよう
view.x = mouse_x - view.w/2;
view.y = mouse_y - view.h/2;
この絵は、なぜ示しています。マウスの下のオブジェクトをtに置かれたとき、あなたが見ることができるように
彼は画面の中心にマウスの下に停止するので、私たちはそれに向かってズームを停止します!
数学のための頭があるなら(これが必要です)、これについての助けがあれば幸いです!
変数の意味を詳しく説明できますか? – WebF0x