掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
FormにImageが触れているかを判定するには? (ID:101288)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
もう一案。 Line メソッドで直線を描く際に、線分の両端座標をすべて記録しておき、 それを元にして壁の有無を調べるという方法もあります。 一般論として、2点 (X0,Y0)-(X1,Y1) を通る直線は、 y = ( ( y1 - y0 ) / ( x1 - x0 ) ) * ( x - x0 ) + y0 という式で表されますので、上記 x に現在の自キャラの横座標を 代入してみて、y が縦座標と一致するようであれば、その自キャラが 線の上に重なっている事になります。 そして移動を考慮する場合、「現在位置」から「移動後の位置」までの 線分が、壁を表す直線と交わるかどうかを算出する事になるでしょう。 http://www5d.biglobe.ne.jp/~tomoya03/shtml/algorithm/Intersection.htm これをすべての壁線分に対して調べていけば、カーソル入力された方向に 移動可能かどうかを調査できます。 なお、実際にゲームとして扱う場合には、これに壁の厚み(線の太さ)と 自キャラImage のサイズ、移動距離単位(今回は 5 かな?)を考慮して 算出する事になるでしょうね。 > Select Case KeyCode > Case 39 > Image1.Move Image1.Left + 5, Image1.Top こういう時には、37〜40 などの「マジック・ナンバー」を使うのではなく、 vbKeyUp, vbKeyLeft, vbKeyRight, vbKeyDown といった「定数」を使って 指定した方が、コードの意味がわかりやすくなりますよ。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.