概要
この記事は中学高校生向けプログラミング教室の教材として作ったものを一部改変したものです。
ゲームで大変よく使う「当たり判定」(衝突判定)について、DXRubyでは===
やcheck
などの便利な機能が付いています。しかし、いつもこのような機能が使えるとは限りません。
では、自分で作るとしたらどうしたらよいでしょうか?実は、いろいろな判定方法が考えられます。
前の記事
・プログラミング初心者向け:DXRubyで 1ステップずつ作っていく「ブロック崩し」 - Qiita
次の記事
・DXRuby:「当たり判定」を自分で作ってみよう A. 四角形の四隅の座標で判定する - Qiita
当たり(衝突)判定の方法
いろいろなやり方が考えられるでしょうが、まずは以下の3通りのやり方が思いつきます。
A. 四角形の四隅の座標で判定する
B. 円の中心からの距離で判定する
C. 色で判定する
それぞれ、別記事になっています。
技術解説
ソースコード
使用ライブラリ
Windows向けRuby用2DゲームライブラリDXRuby
を使用します。
バージョン1.4.2
以上を想定しています。
1.4.2
より前のバージョンとの主な相違点
-
Window.loop
が複数置ける -
マウス位置を取得する
Input.mouse_pos_x
、Input.mouse_pos_y
の新しい書き方として、Input.mouse_x
、Input.mouse_y
が追加
→ DXRuby 1.4.6:更新履歴
DXRubyインストールの注意点
→ DXRuby 1.4.6 をWindows10で使う時の注意点とインストール方法 - noanoa07 - Qiita
https://qiita.com/noanoa07/items/0ce14c2404df38de94b7
参考サイト
-
DXRuby のホームページ
http://dxruby.osdn.jp -
DXRuby 1.4.6 リファレンスマニュアル
http://mirichi.github.io/dxruby-doc/index.html
困ったときは、このページの「チュートリアル」と「マニュアル」にだいたい書いてあります。
- DXRuby 1.4.1 リファレンスマニュアル
http://dxruby.osdn.jp/DXRubyReference/20095313382446.htm
古いバージョンのリファレンスも役に立つときがあります。
- 「ブロック崩し」追加課題1;衝突判定を自作してみよう - noanoa 日々の日記
http://blog.livedoor.jp/noanoa07/archives/2046177.html
このテキストのブログ記事での解説です。
ライセンス
ソースコード、本解説ともにパブリックドメイン