Speakedraw (02) – 移動距離と他オブジェクトとの衝突


前回のCircleクラスの関数moveから呼び出される関数を説明していきます。

一番最初に出てくるdrawLineは本来であれば角度が変更したときに呼び出されるものなのでそちらの方でまとめて解説する予定です。
まずは初回起動時以外で最初に呼ばれる「setStep」について説明をしていきます。
ここではパラメータで指定された移動距離からxy座標それぞれの移動距離を計算します。

  1. 縦はsinθ * パラメータで設定された移動距離数
  2. 横はcosθ * パラメータで設定された移動距離数

となります。


続いて他のオブジェクトとの衝突を確認する「isTouch」について解説します。

  1. 衝突結果(result初期値false)を宣言します。
  2. インスタンス変数で設定した他のオブジェクトと自身が接触しているか確認します。
    2点間の距離は両者のxy座標それぞれのべき乗の和の平方根です。(斜辺の2乗=底辺の2乗+対辺の2乗)
    ※判断基準は自身の座標と別オブジェクト座標の差が両者の半径の和よりも小さい場合を接触しているとして判断します。
    接触状態と判断した場合はその結果を設定します。(true)
  3. 関数「setAngle」移動角度を変更します。(setAngleについては次回以降解説します。)
    ※ここはちょっとバグなんですが、きれいに接触しない場合は他のオブジェクトと遊ぶような感じになります。結果は実際のプログラムで見てください。