「巫女学校物語~沙苗編」販売中!

フルボイスノベルゲーム
「巫女学校物語~沙苗編」
販売中!

PC版
DLSiteで配信中

Android版
Google Playで配信中!

PSVita版
PlayStation Mobileで配信中!

巫女学校物語~沙苗編

体験版はすぐダウンロードできます!

モーションについて・ベジェ曲線

2013年4月19日(金) 12:00

アクションゲームを作るには、モノの動きをプログラムで作らなければいけません。

例えば、毎フレームに弾のX座標に2を足すと、その弾が横に動いているように見えます。プログラムの中には、大体こんな感じになります。

function update()
    bullet.pos_x = bullet.pos_x + 2 // 横動き
end

同じ様に、Y座標を変更すれば、縦に動いているように見えます。XとY座標を同時に変更すれば、斜めに動いている様に見えます。

こういう動きには加速がないので、あまり役に立たないと思います。加速を入れるには、「速度」という変数を追加します。そして、毎フレームに 速度を変えてから、位置を変更します。プログラムはこんな感じです。

function update()
    bullet.vel_x = bullet.vel_x + 0.5
    bullet.pos_x = bullet.pos_x + bullet.vel_x
end

簡単でしょう?

こういう書き方でどんな動きでもできますが、直線以外の動きはだんだん難しくなります。例えば、「巫女学校物語~沙苗編」の メニューのボタンはこういうプログラムで動きます。

function update()
    button.animation_t = button.animation_t + 1
    button.pos_x = (math.sin(button.animation_t * math.pi / 15) ^ 0.6) * 40
end

中の式はだいたいこんな感じに見えています。

サイングラフ

横を時間にすると、縦は位置になります。つまり、最初はボタンは速く動いて、どんどん遅くなります。是非 ミコガクを起動して、確認してみてください。

こういう風に式を書くとどんな動きでも定義できますが、調整するのはなかなか大変です。

「巫女学校~2年生」には、これより更に複雑な動きを入れたいと思いますので、ちょっと違う方法で動きを定義したいと思います。

これでベジェ曲線を紹介したいと 思います。

ベジェ曲線は非常に簡単に定義できます。

  たくさんの複雑な動きを入れています。しかし、すべての動きに対して式を考えてプログラムに 埋め込みません。

ミコガク2で全ての動きはベジェ曲線で定義します。制御点を B0, B1, ..., BN-1 とすると、ベジェ曲線は

ベジェ曲線1

そして、

ベジェ曲線2

プログラムで実装するのは非常に簡単です。まずはそれそれのJを計算します(下の式)。

function calculate_polynomials(order, count)
    local polynomials = {}
    for step = 0, count do
        polynomials[step] = {}
        local t = step / count
        for i = 0, order do
            polynomials[step][i] =
                binomial_coefficient(order, i) * (t ^ i) * ((1 - t) ^ (order - i))
        end
    end
    return polynomials
end

そして、曲線を計算します(上の式)。

function calculate_point_2d(control_points, polynomials, step, order, start_point)
    local point = {}
    point.x = 0
    point.y = 0
    for k = 0, order do
        local index = start_point + k
        if control_points[index] then
            point.x = point.x + polynomials[step][k] *
                control_points[index].x
            point.y = point.y + polynomials[step][k] *
                control_points[index].y
        end
    end
    return point
end

function get_curve_2d(control_points, order, count)
    local points = {}
    points[1] = control_points[1]
    current_point = 2
    point_count = #control_points
    local polynomials = calculate_polynomials(order, count)
    for k = 1, point_count - order, order do
        for step = 1, count do
            points[current_point] =
                calculate_point_2d(control_points, polynomials, step, order, k)
            current_point = current_point + 1
        end
    end
    return points
endd

そして、曲線を簡単に編集できるエディターを作ると…

ベジェ曲線エディター1

ゲーム内の全ての動きをこういう曲線で定義することができます。詳細はまたの機会にお話します。

ちなみに、ベジェ曲線を使って、メッシュを作るのも簡単です♪

ベジェ曲線エディター2

もっと読む

サンクリお疲れ様でした

2013年4月14日(日) 11:56

今日のサンクリはお疲れ様でした!

次回はCOMIC☆1ですね。体験版は頑張ります!

ちなみに6月のサンクリに申し込みましたので、よろしくお願いします。

もっと読む

朝倉亮さんもCOMIC☆1に参加する!

2013年3月27日(水) 12:20

「巫女学校物語~沙苗編」のキャライラスト担当、朝倉亮さんが、今度のCOMIC☆1に自分のサークルでさんかするようです!

スペースは「こ19b」です。たくさん買ってあげてくださいね!

ちなみに、xinoroのスペースは「せ54b」です。こちらも遊びに来てくださいね!

もっと読む

そうさく畑

2013年3月23日(土) 7:03

突然ですが、関西の方は明日、そうさく畑収穫祭2013でミコガクを購入出来ます!

仲間サークル「黒彩黄泉路」のスペースで委託販売を行なっていますので、たくさん買ってあげてくださいね!

場所はOMMビル(大阪マーチャンダイズマート)。スペースは「12丁目22番地」です☆

もっと読む

サイトのリニューアル

2013年3月19日(火) 12:58

サイトをリニューアルした!とりあえず管理しやすくして、モバイルで見やすくした。

そして、サイトのテーマを「春」にした。

これから製作中の「巫女学校~2年生」の開発についていろいろお話していきたいと思う。お楽しみに!

もっと読む

PSVita版配信開始

2013年2月27日(水) 12:00

PS Vita版「巫女学校物語~沙苗編」は今日配信開始されました!PS Vita、又はPlayStation Certifiedのアンドロイド端末で、PlayStation Mobileで見てくださいね!価格は300円です!

もっと読む

Android版配信開始

2013年2月5日(火) 12:00

巫女学校物語~沙苗編Android版の配信を開始しました!ぜひこちらへ

もっと読む

夏コミ

2013年1月29日(火) 12:00

夏コミの申請を完了しました!このカット注目してくださいね

夏コミのカット

もっと読む

今年のイベント

2013年1月20日(日) 12:00

サンシャインクリエイション59及びCOMIC1☆7に申し込みました!4月なので、巫女学校~2年生の体験版はできているはずです。PS Vita版も作りますので、体験しに来てね♪

ちなみに、2月11日のサンクリのスペースは「A23ホール、J27a」です。巫女学校物語~沙苗編のモバイル版(Android、iOS、Vita)のリリースです!

もっと読む