1

私は数学があまり得意ではないので、どなたか助けていただけませんか?

等角図でマウス座標を特定のタイルに変換する関数を作成しようとしています。

ばかげた理由で画像を投稿できないので、画像をリンクするだけです。

リンク

これまで見てきたすべてのアルゴリズムは、X 軸と Y 軸が対角線になっている状態で動作します。私のゲームは現在このように設定されており、そのまま維持したいと考えています。

マウスが赤い点にある場合、マウスが置かれているタイルの座標を返すアルゴリズムはありますか? (6,2)

前もって感謝します!

4

3 に答える 3

2

良いスタートがあります: http://www.java-gaming.org/index.php?topic=23656.0

楽しみ :)

編集

完全に信頼できる「DrDobb's」Web サイト、これに関する完全な記事: http://www.drdobbs.com/parallel/designing-isometric-game-environments/184410055

于 2012-11-30T15:44:41.223 に答える
1
           <0;4>
 x      <0;3> <1;4>
     <0;2> <1;3> <2;4>
  <0;1> <1;2> <2;3> <3;4>
<0;0> <1;1> <2;2> <3;3> <4;4>
  <1;0> <2;1> <3;2> <4;3> 
     <2;0> <3;1> <4;2> 
  y     <3;0> <4;1> 
           <4;0> 

上記のようにタイルをレンダリングしました。

ソリューションは非常に簡単です!

初めにすること:

私のタイルの幅と高さは両方とも= 32です。これは、等角図では、幅= 32、高さ= 16であることを意味します! この場合の Mapheight は 5 (最大 Y 値) です。

y_mouse=MapHeight/tilewidth/2 および x_mouse = 0 の場合、y_iso & x_iso == 0

x_mouse +=1、y_iso -=1 の場合

まず、「ピクセルごとの変換」を計算します

TileY = ((y_mouse*2)-((MapHeight*tilewidth)/2)+x_mouse/2;

TileX = x_mouse-TileY;

タイル座標を見つけるには、両方をタイル幅で割ります

TileY = TileY/32; TileX = TileX/32;

終わり!!問題はありませんでした!

于 2012-12-12T12:32:56.857 に答える