「Raiden 2」紫色レーザーの背後にある数学は何ですか?


15

レーザーの経路は、ユーザー入力と画面に表示される敵の影響を受けます。これがビデオです。5:00に問題のレーザーが表示されます。雷電II(PS)-1ループクリア-パート2

更新

Inkscapeを使用したテストです。船は最下部にあり、最初の4人の敵がプラズマの標的になります。ある種のパターンがあるようです。私は最初に船を動かし、それからハンドルを45°の角度を形成するように動かし、次にカーブにフィットさせようとして平行ハンドルのパターンを見つけ、最後の敵に到達するまで続けました。 ここに画像の説明を入力してください

更新、5 / 26 / 2012ベジェを使用してXNAプロジェクトを開始しましたが、まだいくつかの作業が必要であり、来週質問を更新します。乞うご期待 !

ここに画像の説明を入力してください

更新:5/30/2012:ベジエ曲線を使用しているようです。このようなグレードのプラズマを複製/模倣できると思います。前回から発見した2つの新しいトピックがあります。アーク長ルンゲの現象、最初はベジェ曲線上で線形移動を可能にするのに役立ち、次に頂点の数を最適化するのに役立ちます。次回は進行状況を確認できるようにビデオを掲載します8-)


2
まあ、それはある種のスプラインです。おそらくベジエ曲線。この質問が元の開発者以外の誰かによって答えられるかどうかはわかりません。この効果を再現しようとしている場合は、自分が持っているものを見せて、それが機能していないことを教えてください。
マイケルハウス

2
わからないが、それは過激な量の罰金を持っています。
ハックワース

1
不健康な量の雷電をプレイしたことがあるので、歯磨き粉はどんな種類の閉じた形の曲線でもないのではないかと疑っています。常にかなりの量のメモリを保持しているように見えました。私はそれが義務的な回転半径で何らかの経路を行っていると思う。

@ Byte56:Shmupの開発者/ファンは専任です。これがどこかで文書化/リバースエンジニアリングされていない場合、私は驚くでしょう。

3
船から出ているセグメントを一度に1つずつ最大の曲がり角で配置し、各セグメントが近くにいる場合、または船の移動方向にいる場合、敵の方に向きを変えます。
ケビンリード

回答:


6

私はあなたを助けるかもしれない何かを作成しました。これは、GLBasicフォーラムの誰かを支援するためのものでした。

ここに私の提案があるフォーラムへのリンクがあります: Random Textured Rolling Hills

これはGLBasicで書かれていますが、読みやすくするために、あらゆる言語に簡単に変換できるようにしました。

ニーズに合わせて使用​​するには、スプラインデータ/ポイントを生成する必要があります。この例の「丘」ポイントをスプラインポイントに置き換えます。何らかの方法でアニメーション/ちらつき効果を追加するだけです。たぶんランダムなテクスチャーシフト。

本当の「魔法」は私の「AddPoint」関数で起こります:

FUNCTION AddPoint: h AS THillPoint
    DIMPUSH self.points[], h

    // Is this the very first data point?
    IF LEN(self.points[]) = 1
        self.points[0].pu.Set(0, self.points[0].pm.y - self.texture_ht_up)
        self.points[0].pd.Set(0, self.points[0].pm.y + self.texture_ht_dn)
        RETURN
    ENDIF

    ALIAS h0 AS self.points[-2]  // Reference to the 2nd last point
    ALIAS h1 AS self.points[-1]  // Reference to the last point
    LOCAL angle#
    LOCAL v1 AS TVector
    LOCAL v0 AS TVector

    // Calculate 'p2' of HillPoint - form rectangle with previous point
    angle = ATAN(h1.pm.y - h0.pm.y, h1.pm.x - h0.pm.x)  -90// Angle of the two points

    v1.x = COS(angle) * self.texture_ht_up + h1.pm.x
    v1.y = SIN(angle) * self.texture_ht_up + h1.pm.y
    v0.x = COS(angle) * self.texture_ht_up + h0.pm.x
    v0.y = SIN(angle) * self.texture_ht_up + h0.pm.y
    h0.pu = h0.pu.AverageWith(v0)
    h1.pu.Copy(v1)

    v1.x = COS(angle) * -self.texture_ht_dn + h1.pm.x
    v1.y = SIN(angle) * -self.texture_ht_dn + h1.pm.y
    v0.x = COS(angle) * -self.texture_ht_dn + h0.pm.x
    v0.y = SIN(angle) * -self.texture_ht_dn + h0.pm.y
    h0.pd = h0.pd.AverageWith(v0)
    h1.pd.Copy(v1)
ENDFUNCTION

ここで、線に沿ってスプライトをプロットする最終的な四角形/多角形を計算します。

最終結果は次のとおりです。 ここに画像の説明を入力してください

そして、ポリゴンのワイヤフレームをオンにして: ここに画像の説明を入力してください


1
素晴らしいですね。ところで、あなたが与えたリンクは壊れています。
アイベ

3
リンクが私にとって壊れていないようです
...-doppelgreener

ランダムテクスチャローリングヒルズのリンクを今すぐチェックしたところ、404エラーが発生しました。
アイベ

1
奇妙な。それはまだ私のために動作します。しかし、ここに基礎となるリンクがあります:glbasic.com/forum/index.php
topic=

私のために壊れて、私はホームページを試してみました、それは「それは動作します!」そしてそれは...奇妙です。
アイベ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.