70 likes | 209 Views
プロジェクト演習 Ⅳ ・ Ⅵ インタラクティブゲーム制作. 第 8 回 小ネタ色々. 今日の内容. 参照について ポリシーのある 使い分けをしよう 衝突判定の注意点 干渉判定と 衝突判定の違い. Visual Studio あれこれ デバッガの使い方 ファイルパスについて その他各種設定項目. 別にポリシー曲げた 訳じゃなくてね. 参照を使った理由 & がいらないから! ホント、こんだけです 「 & はおまじないなんだよ」と言いたくなかった ポインタ渡しの方が明示的で分かりやすいと思っているのは今でも変わりません
E N D
プロジェクト演習Ⅳ・Ⅵインタラクティブゲーム制作プロジェクト演習Ⅳ・Ⅵインタラクティブゲーム制作 第8回 小ネタ色々
今日の内容 • 参照について • ポリシーのある使い分けをしよう • 衝突判定の注意点 • 干渉判定と衝突判定の違い • Visual Studioあれこれ • デバッガの使い方 • ファイルパスについて • その他各種設定項目
別にポリシー曲げた訳じゃなくてね • 参照を使った理由 • &がいらないから! • ホント、こんだけです • 「&はおまじないなんだよ」と言いたくなかった • ポインタ渡しの方が明示的で分かりやすいと思っているのは今でも変わりません • 実際設計してみたら、余計な記号を付ける機会が減って、案外悪くないなぁとは思いました
じゃあどっちを使うべき? • ポインタ渡し • 実体を渡す時に&が必要 • 値渡しとの区別が付きやすい • &を正確に理解するのが一苦労 • なんだかんだで汎用性は高い • 参照渡し • ポインタ経由でインスタンスを渡す時に*が必要 • 値渡しとの区別が付きにくい • ポインタを理解していない人でもアドレス参照が利用できる • 万能ではないが、要所要所で効果的
値オブジェクトと参照オブジェクト • 有用な参考資料 • http://www.ogis-ri.co.jp/otc/hiroba/technical/CppDesignNote/ • fk_Vectorは典型的な値オブジェクト • fk_Angle, fk_Colorなども該当 • 形状や画像を表現するクラスは値参照オブジェクト • それ以外は普通のオブジェクト
引数を管理する場合の注意 • 値オブジェクトは値渡しでもいい • コピーのコストを抑えるために裏でこっそり参照渡しにする、なども有効 • 参照オブジェクトは値渡し禁止 • インスタンスコピーが必要な場合は、可能なものなら関数があるはずなのでそれを利用 • 読み取りは参照、書き込みはポインタ、などという使い分けも有効です
衝突判定の注意点 • checkVS…は「その時点で重なっているか」を判定する関数 • これを厳密には「干渉判定」と呼ぶ • 今回checkVSMoving…関数を追加した • 引数に速度(次にどれだけ進むつもりか)を与える必要がある • 裏でやってることは「少しずつ動かして干渉しているかを調べる」という力業 • もうちっと数学的にスマートに解く方法もある