[ - ] スポンサーサイト
一定期間更新がないため広告を表示しています
| 2018.05.23 Wednesday | - | - |
ツクールでのオリジナル作品の話を中心に創作関係の徒然な語り。
一定期間更新がないため広告を表示しています
| 2018.05.23 Wednesday | - | - |
さて、今回のゲームで間違いなく必要なのは「マウス位置の取得」と「クリックの検知」である。
マウス位置の取得は大したことないだろうと思いきやこれが意外。簡単に取得できるのは「スクリーン座標」であり、Game.exe(RGSS Player)の内側の座標にするには数ステップ必要なのだった。
まず、GetCursorPos 関数で「スクリーン座標」が取得できる。
それをScreenToClient 関数に通せばいいのだがここで「ウィンドウハンドル」が必要になる。詳しく話すとポインタ云々でややこしいし俺もはっきり理解したわけじゃないので雑に言うと、「プログラム内でそのウィンドウを示す変数」みたいなものだ。これにはFindWindow 関数が必要になる。
しかしここで、FindWindow 関数にはそのウィンドウについている「タイトル」が必要というトラップ発動(笑)ウィンドウハンドルを取得する処理に必要なのでウィンドウから取ることなどできず、フォルダにある「Game.ini」から取得する。Game.iniはただのテキストファイルだが、スムーズに読むにはopenではなくGetPrivateProfileString 関数を使うことになる。
ということで計4つの関数を経てやっとマウス位置が取得できるわけだ。しんどかった……(笑)
さて文字数の都合で実際の処理は次のエントリに回しここではWin32API自体の復習。
RGSSではWin32APIクラスがデフォルトで入っているので、requireは不要。そのまま使うことができる、
Win32API.newに(DLL名、関数名、関数の引数の型、戻り値の型)を渡す。
ここで「型」は「型を表す文字列(の配列)」である。そう以前のエントリでも触れた「p」やら「i」やらだ。この辺もまだ理解が今一つなので、次回各関数に合わせて語っていく。
生成したWin32APIクラスのインスタンスのcallメソッドを実行すると目的の関数が実行されることになる。当然ながら戻り値や引数がどうなるかは関数ごとに違う。
このくらいが現時点での俺の理解。見ての通りまだまだである。
次回、上で述べた処理に必要な関数について。クリックの検知のほうは、Inputモジュールをいじるので更にそのあとのエントリとする。
| 2016.06.25 Saturday 01:07 | comments(0) | trackbacks(0) |
| 2018.05.23 Wednesday 01:07 | - | - |
S | M | T | W | T | F | S |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 | ||||