SRC質問掲示板Mk2
(現在 過去ログ72 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■13529 / inTopicNo.1)  クリック地点の座標
  
□投稿者/ ゾヌ -(2004/04/27(Tue) 08:36:42)
    クリックした位置はMouseX,Yで求められますが、
    この数字をマップ座標(32pxで1)に変換する事は出来ますか?
    今見ているマップの中心座標がを求める方法があればいいのですが・・・
引用返信/返信 削除キー/
■13532 / inTopicNo.2)  Re[1]: クリック地点の座標
□投稿者/ GAMEMASTER -(2004/04/27(Tue) 09:19:25)
http://nagoya.cool.ne.jp/gamemaster/
     お初にお目にかかります。
     SRCユーザーの1人「GAMEMASTER」と申します。

    > クリックした位置はMouseX,Yで求められますが、
    > この数字をマップ座標(32pxで1)に変換する事は出来ますか?
    > 今見ているマップの中心座標がを求める方法があればいいのですが・・・

     演算子や関数を用いて座標を計算しましょう。
     詳細はヘルプをご覧下さい。

     参考になれば幸いです。

     もう時間がないようでございますね。では、これにて退散させてもらいましょう。
引用返信/返信 削除キー/
■13533 / inTopicNo.3)  Re[2]: クリック地点の座標
□投稿者/ ゾヌ -(2004/04/27(Tue) 09:45:26)
    それは当然解っています。
    直接求める関数がない以上、自分で式を組むしかありませんから。

    MouseX,Y関数は、クリックした位置のウィンドウ座標を求めるものです。
    クリックした箇所を求める関数はこれしかありませんので、
    ウィンドウ座標が計算の最初の要素になります。
    ここからマップ座標を求めたい訳ですが、
    ウィンドウ座標とマップ座標を重ね合わせる方法が解らないのです。

    例えばウィンドウの中心をクリックした場合、
    ウィンドウ左上端にマップ座標(1,1)が来ていれば、
    クリックしたマップ座標が(8,8)である事が解りますが、
    ウィンドウ左上端のマップ座標が(2,2)の場合、
    (+1,+1)を引数として求める方法が解らないのです。

    ヘルプも関数表も昨日から随分読み直していますが、頭が良くないようです。
    具体的な部分を指摘して下さると助かります。
引用返信/返信 削除キー/
■13534 / inTopicNo.4)  Re[3]: クリック地点の座標
□投稿者/ GAMEMASTER -(2004/04/27(Tue) 11:16:42)
http://nagoya.cool.ne.jp/gamemaster/
     GAMEMASTERです。

    > それは当然解っています。
    > 直接求める関数がない以上、自分で式を組むしかありませんから。
    >
    > MouseX,Y関数は、クリックした位置のウィンドウ座標を求めるものです。
    > クリックした箇所を求める関数はこれしかありませんので、
    > ウィンドウ座標が計算の最初の要素になります。
    > ここからマップ座標を求めたい訳ですが、
    > ウィンドウ座標とマップ座標を重ね合わせる方法が解らないのです。
    >
    > 例えばウィンドウの中心をクリックした場合、
    > ウィンドウ左上端にマップ座標(1,1)が来ていれば、
    > クリックしたマップ座標が(8,8)である事が解りますが、
    > ウィンドウ左上端のマップ座標が(2,2)の場合、
    > (+1,+1)を引数として求める方法が解らないのです。

     WX関数及びWY関数に数値を代入すると、マップのX座標及びY座標がその数値だった場合の表示位置のX座標及びY座標を取得出来ます。
     例えばウィンドウ左上端のマップ座標が(1,1)の場合、WX(1)及びWY(1)はそれぞれ0(表示領域の左上端)を返しますが、ウィンドウ左上端のマップ座標が(2,2)の場合、WX(1)及びWY(1)はそれぞれ-32(表示領域の左上端からさらに左上の、仮想的な表示領域外座標)を返します。これを計算に利用しましょう。
     詳細はヘルプをご覧下さい。

     参考になれば幸いです。

     もう時間がないようでございますね。では、これにて退散させてもらいましょう。
引用返信/返信 削除キー/
■13537 / inTopicNo.5)  Re[4]: クリック地点の座標
□投稿者/ ゾヌ -(2004/04/27(Tue) 13:04:07)
    回答ありがとうございます。

    答えて頂いた上に申し訳ないのですが、
    選択したマップ座標からウィンドウ座標を求める方法では、全く逆です。

    要するに自分が求めたい事は、マップコマンドなりでクリック監視待機を作り、
    そこで左クリックされたマップ座標、即ち、
    その座標にユニットがあれば、X(),Y()で返ってくる座標です。
    (ユニットのあるなしに関係なくです)

    しかしマウスの座標として返って来るのはあくまでウィンドウ座標で、
    そしてCenterがどこにあろうが、ウィンドウ座標でしかありません。

    >WX(1)及びWY(1)はそれぞれ〜
    つまり、このWX(1),WY(1)の"1"が求められないのです。
    ウィンドウ左上端のマップ座標が(2,2)だった場合、
    ウィンドウ中央をクリックでマップ座標(9,9)を返したいのです。
    言い換えれば、マップ座標の(0,0)(*32)とウィンドウ座標の(0,0)との差を求めたいのです。

    宜しくご指導下さい。
引用返信/返信 削除キー/
■13538 / inTopicNo.6)  Re[5]: クリック地点の座標
□投稿者/ GAMEMASTER -(2004/04/27(Tue) 14:14:08)
http://nagoya.cool.ne.jp/gamemaster/
     GAMEMASTERです。

    > 答えて頂いた上に申し訳ないのですが、
    > 選択したマップ座標からウィンドウ座標を求める方法では、全く逆です。
    >
    > 要するに自分が求めたい事は、マップコマンドなりでクリック監視待機を作り、
    > そこで左クリックされたマップ座標、即ち、
    > その座標にユニットがあれば、X(),Y()で返ってくる座標です。
    > (ユニットのあるなしに関係なくです)
    >
    > しかしマウスの座標として返って来るのはあくまでウィンドウ座標で、
    > そしてCenterがどこにあろうが、ウィンドウ座標でしかありません。
    >
    > >WX(1)及びWY(1)はそれぞれ〜
    > つまり、このWX(1),WY(1)の"1"が求められないのです。
    > ウィンドウ左上端のマップ座標が(2,2)だった場合、
    > ウィンドウ中央をクリックでマップ座標(9,9)を返したいのです。
    > 言い換えれば、マップ座標の(0,0)(*32)とウィンドウ座標の(0,0)との差を求めたいのです。

     マップ座標の範囲は1〜15・表示座標の範囲は0〜479で、表示座標が32変化するごとにマップ座標は1変化するため、MouseX及びMouseYを用いて選択した座標をマップ座標に換算する式は以下の通りになります。


     選択X座標(仮) = MouseX \ 32 + 1 ……(1)
     選択Y座標(仮) = MouseY \ 32 + 1 ……(2)


     但し、ここで得られる座標はマップの中央が(8,8)であるという仮定の下での値です。
     一方、表示されているマップの中央が(8,8)から1ずつ変化するごとにマップ座標(1,1)の表示座標、即ちWX(1)及びWY(1)の値は32ずつ変化します。
     このことはWX(1)及びWY(1)を用いて、以下の式で表すことが出来ます。


     中央X座標 = 8 - WX(1) \ 32 ……(3)
     中央Y座標 = 8 - WY(1) \ 32 ……(4)


     (1)(2)で得られた座標を正しい座標に変換するには、(3)(4)を用いてマップ中央の座標が(8,8)からいくら変化しているかを算出し、それを(1)(2)に加える必要があります。
     中央の座標のずれは(3)(4)と8の差を求め、


     X座標ずれ = 中央X座標 - 8 = - WX(1) \ 32 ……(5)
     Y座標ずれ = 中央Y座標 - 8 = - WY(1) \ 32 ……(6)


     となります。(5)(6)をそれぞれ(1)(2)に加え、


     選択X座標 = 選択X座標(仮) + X座標ずれ
           = MouseX \ 32 + 1 - WX(1) \ 32
           = (MouseX - WX(1)) \ 32 + 1 ……(7)

     選択Y座標 = 選択Y座標(仮) + Y座標ずれ
           = MouseY \ 32 + 1 - WY(1) \ 32
           = (MouseY - WY(1)) \ 32 + 1 ……(8)


     よって、任意のクリックした座標を取得する式は(7)(8)となります。

     参考になれば幸いです。

     もう時間がないようでございますね。では、これにて退散させてもらいましょう。
引用返信/返信 削除キー/
■13542 / inTopicNo.7)  Re[6]: クリック地点の座標
□投稿者/ ゾヌ -(2004/04/27(Tue) 14:48:03)
    回答ありがとうございます。

    無事に出来ました。
    どうやら、WX(),WY()関数の仕様を間違えて理解していたようです。
    ややこしい話は苦手のようです。

    解りやすい解説まで付けていただいて申し訳ありません。
    おかげで計算の仕組みを完全に理解しました。
    また何かあれば宜しくご指導下さい。

    では。
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

- Child Tree -
- Antispam Version -