HyperCard tribute
当たり判定をする
ボタン ball が、ボタン wall に当たると動かなくなるというものを作ってみます。 2つのボタンを用意し、それぞれ、ball、wallと名前を付けて下さい。それぞれのボタンの位置は、以下の図の様に同じ水平線上に置いて下さい。 ボタンballには以下のスクリプトを書き込みます。グローバル変数xには、ボタンballのx座標が入っています。スクリプト自体は、mainハンドラを呼び出すだけの簡単なものですから理解は簡単です。
カードには、mainハンドラを書き込みます。
6行目は正しく、当たり判定に関わる部分です。ボタンballのloc座標が、ボタンwallのrect座標内にあるかどうかを判定します。rect座標は、左上の座標と右下の座標の4つのデータを持っています。
当たり判定にはこの他にif文を用いる方法もありますが、スクリプトが複雑になりますし、後々の管理・変更も容易になりますので、簡単な当たり判定を行う場合は、今回の、オブジェクト内に入ったかどうかを用いた方が良いでしょう。ただし、HyperCardはカード上にたくさんのオブジェクトがあるとスピードの低下が著しくなりますので、多くの判定を必要とする場合やスピードを重視する場合はif文を用いた方が良い場合もあります。 |