タグ

ブックマーク / marupeke296.com (7)

  • Double Dispatch

    ホーム < ゲームつくろー! < デザインパターン習得編 Double Dispatch ~抽象オブジェクトがお互いを知れる!~ 例えば3種類のキャラクタ(A,B,C)がいたとします。AはBに合うとBをべようとし、BはAから逃げようとします。BはCに合うと笑い、CはBに合うと怒ります。CはAに合うと踊り、AはCに拍手を送ります。また同じ種族に合うと挨拶をするとします。いわゆるライフゲームですね。この3種類のキャラクタを世界に撒いてしばらく見ていると、どこかでお互いに出会う機会がやってきます。出会った時に各キャラクタは「Actionメソッド」でそれぞれの振る舞いをするとします。 Aのアクションは「挨拶をする、べようとする、踊る」です。これら具体的な行動をActionメソッド内で呼び出したいわけです。しかし、世界に撒かれているキャラクタは多分「Characterクラス」という抽象クラスでし

    you21979
    you21979 2015/10/22
  • その3 コルーチンで状態遷移をLuaで制御

    ホーム < ゲームつくろー! < Lua組み込み編 その3 コルーチンで状態遷移をLuaで制御 Luaが持つ素晴らしい機能の一つに「コルーチン(coroutine)」があります。コルーチンは「関数の途中で戻ってきて、続きからまた実行出来る」という仕組みです。 こう聞いても「ん?」とハテナが付くと思います。私もそうでした。C言語にはコルーチンの機能がありません。なので、C言語に慣れている人だとピンと来ないんですよね。 例えば、キャラクタの位置を連続的に動かす事を考えてみます。最初10フレームは右へ1ステップずつ動き、次の5フレームで上へ、さらに次の7フレームで左下に移動するとしましょう。これをC言語でベタに書くとこんな感じになります: int state = STEP_1; int curFrame = 0; int step() { switch(state) { // 右へ10フレーム1

  • DirectX技術編

    ホーム < ゲームつくろー! < DirectX9技術編 DirectX9技術編 Direct Graphics その1 初期化なんて怖くないぜ! 2013. 1. 11 改正 サンプルプログラム その2 座標変換済み頂点で2D板ポリゴンを描画 2006. 5. 15 加筆改正 サンプルプログラム その3 テクスチャ作成あれこれ 2005. 12. 3 改正 サンプルプログラム その4 もう悩まないテクスチャブレンディング 2005. 12. 3 改正 その5 高速フォント表示 2006. 5. 12 加筆改正 サンプルプログラム その6 板ポリゴンに写る3Dオブジェクト 2005. 12. 3 改正 その7 3Dオブジェクト描画のおさらい 2006. 7. 11 加筆改正 サンプルプログラム その8 キーフレームアニメーションで動きを制御 2005. 12. 3 改正 その9 Xファイル

    you21979
    you21979 2014/07/22
  • その60 変換行列A×BとB×Aの違いを知ろう

    ホーム < ゲームつくろー! < DirectX技術編 その60 変換行列A×BとB×Aの違いを知ろう 3Dのゲームを作る上で変換行列は欠かせません。ローカルにあるモデルを世界に置くにはワールド変換行列が必要です。ところで、そのワールド変換行列を作る過程で「行列の掛け算」が出現します。例えば回転行列Rと位置行列Tから「30度回転させて座標(10,20,30)にモデルを置くワールド変換行列」なるものを作るわけです。 では、「世界に置いた位置からさらにモデルの向いている方向に40だけ移動させるワールド変換行列」とか「親モデルから相対的に30度親の空間のZ軸で回転させる」などゲーム制作上必要となる複雑なワールド変換行列を作るにはどう考えてどう行列を掛け算をしていけば良いのでしょうか。この行列感覚はとてつもなく重要です。 章では色々な事例を検証しながら「変換行列を掛ける」という事をどう捉えるべき

    you21979
    you21979 2014/07/22
  • 衝突判定編

    ホーム < ゲームつくろー!< 衝突判定編 衝突判定編 ゲームで絶対に必要になるのが「衝突判定」です。ぶつかる物があって、初めて世界が生まれます。ここでは、衝突(Collision)にトコトンこだわってみました。 (当は自分の学習のためでもあります(^-^;)

    you21979
    you21979 2014/05/17
  • その13 OBBとOBBの衝突

    ホーム<ゲームつくろー!<衝突判定編< OBBとOBBの衝突 3D衝突編 その13 OBBとOBBの衝突 衝突の丸の1つ「OBBとOBB」の衝突です。大きさの違うお互いに3次元的に回転した直方体が衝突しているかどうかを調べるというのはやはり簡単ではありませんが、これができると多種多様な方面で役に立ちます。OBB同士の衝突として主流なのは「分離軸判定」と呼ばれる方法でして、ここでもそれについて見ていきます。ちょっと深呼吸してご覧下さい(^-^; ① 「分離軸」判定とは? OBBの衝突には「分離軸」という物が登場します。これがいったい何なのか?まずは下の図をご覧下さい。 上のOBBは明らかに衝突していません。この時、両方のOBBを分ける直線が「絶対に」存在します。この直線は、ちょっと小難しい言葉で言うと分離超平面(Separating hyperplane)と呼ばれています。直線なのに平面と

    you21979
    you21979 2014/05/17
  • その10 クォータニオンを学んでみよう!

    ホーム < ゲームつくろー! < DirectX技術編 < クォータニオンを学んでみよう! その10 クォータニオンを学んでみよう! ① What is Quaternion ? クォータニオン(Quaternion)とは日語で「4元数」と訳します(アルク:http://www.alc.co.jp/)。数字が4つ集まったもので、言ってみれば4次元ベクトルです。3次元ベクトルであれば縦横高さで何となく想像ができますが、4次元となるともうドラえもんしかわかりません(笑)。この原稿を書いている私も、実は何のことやらさっぱり。そこで、私と同じような境遇にいる皆さんにも理解できるように、このクォータニオンを1から学んでみようと思います。 クォータニオンについてマイクロソフトのHPに一通りの説明がありました(http://www.microsoft.com/japan/msdn/academic/A

    you21979
    you21979 2012/10/11
  • 1