触手の動きのアルゴリズム教えてください
沙羅曼陀の1面やグラディウスIIの2面にでてくるようなスラッとした動きの触手、 グラディウスIIIの植物面にでてくるのや沙羅曼陀の1面ボスのゴーレムの手みたいに 時機を追いかけているうちに自ら絡まってこんがらかるような動きの触手の アルゴリズムというか計算方法を教えてください。 >>1 いや、別にこんがらがるように設計したわけじゃないと思うぞ。単に親細胞上を動く子細胞の角度を限定したから1方向に回されると絡まるだけで。 三角関数でキャラを円運動させれれば、触手の実装は簡単です。親の運動値を子に渡せばいいだけですから。ちなみに移動速度が速くて角度制限無しの触手を作ると、自機の方向に突っ張った触手が出来あがります。 >>3 ロジックってこんな感じになるの? 触手の一番先端の細胞が自機の方移動します。 その動きを元に、各親へ移動情報を伝えていきます。 一番上の親にきたところで問題発生。遠すぎてその位置へは 移動できないらしい。とりあえず最大限のところまで移動。 今度はその情報を子に伝えていきます。 これで先端細胞の最終位置が決まりました! グラディウスの触手の細胞は重なりあうのがOKだけど、 重なりあわないようにすると(例えば真珠のネックレス) 結構難しくない? 全オブジェクト間で重なりチェックして 重なってたら距離が離れる方向に補正してやればいいんじゃネーノ? わかったようなわからないような・・・馬鹿でごめんなさい。 自分の座標 X Y 触手の各オブジェクトの座標 SX(i) SY (i) 触手オブジェクトの数 i iは仮に10個だとして10個目が付け根で位置固定として自分を追いかけてくるような サンプルプログラムきぼん。N88BASICで。 >>1 ふーん。ナルホド。 今、適当に考えてみた(だけ)では、 ホーミングミサイルの、迂回しながら追尾 &親子リンク &各ノードの座標値(親からの相対座標)を、触手のノードサイズでクランプ でいけないかな?いけるような気がする。(多分) >>9 いいんじゃネーノ?ってずいぶん軽く言うね。(ワラ 全オブジェチェックは当然だけど、1パスじゃ無理な状態もあるね。 >>13 たぶん、 とりあえずで基本的な考え方を軽〜く書いただけだろう。 自分で実装するなら真面目に考えるけどなー。 >>1 それは自分で考えたほうがいいよ。 出来た時には「俺ってすげぇ」とか思う(錯覚)よ。 俺が学校でVB習ったときに、 グラディウスのオプションやレーザーの動きを自分で考えてみたんだけど、 出来たときはそう思った。 どうでもいいけど、 グラのオプションの動きとツインビーの分身の動きの違いは、 プログラム上では、何かの命令文を上のほうに書くか、 下のほうに書くかの違いだけだった。 双方向リストにすると触手をいくらでも追加できて良いよ。 >15 ハァ? レバーを入っているときだけ循環バッファに書き込むか、 レバーが入っていなくても書き込むかの違いだけだろ? 単純な循環バッファ(って言うのか?)だけで処理する分身なんて この板みてる奴なら誰でも作れると思われ。 >>15 にはぜひ自分で考えた触手の動きを発表してもらいたいものだ。 いやオプやレーザーでも可。きっと微笑ましいものに違いない。 それはそうとグラのオプはコンシューマー機用のは単純な循環バッファ処理のようだが アケ版はシリーズすべて異なる妙なアルゴリズムなんだよね。 以前別板のスレでずいぶん議論が盛り上がっていた。 グラディウスのオプションって何種類か無かったっけ? 感性で引っ張られる奴とか、親機をトレースするのとか、くるくる回るのとか >>17 , >>18 まぁまぁ落ち着いて。 >俺が学校でVB習ったときに、 この文章見た時点でレベルなんて想像できるでしょうに。 学校で教わる前にできてろよ。そんなもん。 つーかVB教えるような学校通うな。 つーかプログラミング学校で習うな。 >>18 > それはそうとグラのオプはコンシューマー機用のは単純な循環バッファ処理のようだが > アケ版はシリーズすべて異なる妙なアルゴリズムなんだよね。 > 以前別板のスレでずいぶん議論が盛り上がっていた。 後から追加された追尾型以外のは別として、 グラII以降は普通のルーチンになったように記憶しているんだけど…。 詳細希望。できればそのスレも。 いくつか節をもうけてフックの法則を適用 3dにも使えるし動きもリアルだと思います。 流石にサラマンダとライフフォースのオプションの動きは全く同じだろうな。 サラマンダの微妙にギクシャクしたオプションの動き方に萌え 無理矢理こじつけるなら オプションは単方向にデータが流れるだけだが 触手は双方向にデータが流れる(というかフィードバック) ぐらいかな。 だめだ、全然違うなw >>27 別に無理してこじつけなくても両者に共通する部分は多いと思う。 ただ、どちらも種類が多すぎるから、全然かぶらないのもあるけど。 オプションの場合、自機の軌跡をそっくりたどるけど それを触手に見せたいときは、触手の付け根と内挿すれば良い。 後は先端をそれっぽく動かせば、昔、何処かで見たような触手になる。 たこの足や、鞭のように根っこに意思がある(?)ものは根っこの方から 新しい座標を使用するようにし、 先端に頭がついていて、根っこが固定されている謎の生物のように 先端に意思があるものは、先端の方から新しい座標を使用するようにする。 これは座標を伝達させる例だけど、相対角度を伝達させる例もある。 紐のようなルーチンを使用することもある。 他にも微妙に違うのや、合わせ技や、全然違うものもある。 上記の例は、最初の以外は、確かにグラディウスのオプションとは 関係ない動きをするが、これらのアルゴリズムを使ったオプションが あっても何ら不思議ではない。 むしろ、そう言う変わった動きをするオプションを使うゲームが 流行った時期もあった(代表はアイレム等)。 だからって単発質問スレを認めるわけにはいかんだろ!? 削除依頼出して、適当なスレで続きを議論してくれよ それとも、触手の話題だけで1000レス行くとでも思ってる? 普段は単発質問スレの教えてクンがいると荒らしてしまうのに、 ちょっとでも知ってる事があると知ったかぶって議論したくなるのは キミたちの悪いところだぞ。仮面紳士めが!。 プログラム遊びの題材としては 触手って簡単で結構面白いと思うんだけど…。 世知辛い世の中だねぇ…。 >>31 これだけ実のある話がでてきているスレで その手の話をするのは本末転倒だろ。 この板に山程あるクソスレにくらべたら よっぽどマシな話が出てきてるじゃねーか。 何も議論できない風紀仕切りたがりは逝ってよし。 これだけネタになればスレとしては十分存在するに値する。 度のすぎた仕切りは荒しとかわんねーっつの。 も、もしかして、1000レス行く事がスレッドの目的なのか? >>33 事実、実のある話が出てきているのは素直に認めよう。 この板の下らないスレよりはよっぽどマシだと思うよ。 だけどな、実のあるスレになったのは結果論であって、 単発質問スレを立てたことは非難されても仕方ないだろ? 第一、スレを立てた>>1 はどこへ行ったよ? これを認めてしまうと、「実のあるスレになるかも」といって なんでもかんでも単発スレ立つだろうが? くだらねぇ事だと自分でも思っているが、こういうところから キッチリしていかねーと、この板腐るだろ? >>35 だからよう… こういう風に関係ない議論する時点でスレ本来の議論にゴミが入るわけよ。 まず、実のある話をしてる最中にこういう風紀的なことをすると水をさして 実のある話をしていた人間が去り、 再びクソスレ化が進むということをよっっく理解してくれ。 単発スレが立ったら、ボコボコに叩いていいと思う。 だけど、ネタが育ったスレをなにもわざわざまたクソスレに戻すことはないじゃないのか? スレに実のある話題がついたことでクソスレが一個減ったわけだろう? そうやって無菌状態にして、この板に何が残るんだよ? 話題どんどん減らしちゃってどうするつもりなんだよ? アンタ何様なんだよ。 ∧_∧ ( ´Д` ) <久し振りに自治荒らしを見ますた! /, / (ぃ9 | / /、 / ∧_二つ / / / \ / /~\ \ / / > ) / ノ / / / / . / ./. (゚д゚) ミマスタ! / ./ ( ヽ、 ゚( )− ( _) \__つ / > . モミジマンジュー 触手が最初にゲームに登場したのはいつなんだろうね。やっぱグラディウス?(これ以前が思い浮かばん) 印象が強いのはファンタジーゾーンのクラブンガーかなぁ。触手腕をぶんぶん振りまわして体操していたのがなつかすぃ。 丸(1キャラ)型から角(多角度)型に進化して、そして今、触手はどこへ…。 3Dで軟体触手(そんな表現があるのか知らんが)かと。 >>32-41 自治厨の煽りに見事に釣られてしまったようだな。 ヤツの思う壺だろ? このスレを殺したのは、釣られてしまった君達自身で あることも忘れるな! >>43 かちゅだとそのリンクの張り方は見づらいのでやめてケロ。 >>35 >第一、スレを立てた>>1 はどこへ行ったよ? 名無しで参加しておりますが。 これってよくあるonekeyゲームを3Dにしたものかな 解説斜め読みしたところ3dとかサウンドにしか触れていない ただのバッファリング? こういうレトロゲームを無駄に3D化系って意外とインパクトあるな。 前にこの板のどっかで見たブロック崩しもだけど。 とりあえず 触手系…親から子へ移動値を継承 蛇系…親から子へ座標値を継承 てok? みんなひどいこと言うな…。VB房をいじめないで下さい。 >>17 循環バッファ?わかんない。 ただ自分で考えたときは15に書いたような違いになったの。 >>18 >>>15 にはぜひ自分で考えた触手の動きを発表してもらいたいものだ。 作ったこと無い。 >いやオプやレーザーでも可。きっと微笑ましいものに違いない。 レベルの高いあなた達から見たら微笑ましいよ。 レーザーなんかLINE命令だもん。 作った頃はWindowsAPIも知らなかったから、 イメージとタイマー使ってカクカク動かしてた。 >>21 大学で習ったんだよ。なぜVBかっていうと、 多分Cとかは学生には理解できないと思われてたんだろう。 実際、その大学で一番プログラムが出来たのが、 このスレでヘタレ扱いされてる俺だし。 課題でゲーム作っただけで「すげぇ!」とか言われるレベルだった。 53の訂正 × 学生には理解できない ○ うちの大学の学生には理解できない 情報処理系の大学でない上に、学生のやる気もあまりないんで。 >>53 >循環バッファ バッファに値をぽこぽこ追加していくと、いつかバッファの容量が足りなくなるけど、 そのときに頭に戻って重ね書きしてしまう構造のバッファのことを 循環しているから「循環バッファ」と呼んでるんだと思うよ。 こうすればいくらでもデータが追加できる。 ただし、あんまり古いデータは重ね書きされて消えてしまっている。 >>54 大学なんてそんなもん。 情報処理系でもプログラム書ける人間が1割いればいいほうなんじゃん? オプションのソースが見つかった。 今見ると自分でも何だかわかんない。 >>55 循環バッファってこういうやつかな? If u = 0 Then e(3) = d(2) d(2) = c(1) c(1) = b(0) b(0) = a(5) u = u + 1 適当な変数名…。 >>57 == 15 機能としてはそれで良いはず。 ただ >>18 が循環バッファといったのはこれとは違う実装のことだと思います。 あなたがやったのは、バッファにデータを追加したときに、全バッファないのデータを 1つスライドさせていると思うのですが、 >>18 が言ったのは、多分、データを1つ追加するときに、記録する位置が1つずつ移動していく タイプのもののことだと思います。こうして移動していくと、記録位置が いつかバッファを飛び出してしまいますが、そうしたら、記録位置を先頭に戻してやります。 こうして永遠にぐるぐる周る(循環する)構造を指して循環バッファと呼んだのだと思います。 バッファこの構造にしておけば、バッファサイズを大きくしても重くならないので 長く記憶することができます。ただし、古いデータを参照するときにも 書きこみ位置(最新のデータの位置)が変化していることと、バッファの末端と先頭が 論理的に連続していることに注意しなければなりません。 ちなみに >>18 も「?」を付けていたように、この「循環バッファ」という呼び名が 正しいかどうかは分かりません。 申し訳ないですが、VBは解からないので、ソースは提示できません。 ですから、あなたの提示したソースも誤解している恐れがあります。 Cで良ければ、こちらとしては助かるのですが。 まぁ、組んでる人が使いやすい言語が一番なので がんばってみてください。 >>58 詳しい解説ありがとうございます。 どこかで聞いたような話だと思って、最近買った 『プログラムはなぜ動くのか』矢沢久雄著 を読んでみたら… >>59 >>60 リングバッファのことでした。 int xytbl[100][2]; 毎ループ、データをずらすかポインタをインクリメントするかして 新しい座標をセットして、個々のパーツが参照するのは 4個か5個おきのデータ、、、ていうような処理でいいんでしょか。 無駄な領域を多く取りすぎるので、もっといい方法知ってる人 教えてくれ。 触手の話から「オプションから勉強し直そう」スレになっとるがな。 オプションがバッファにして持ってる座標値を、 それぞれ角度に変えたら、触手になるかな? >>62 俺もそんなようなのしか思いつかないけど グラディウスの場合、自機がスピードアップ(ダウン)すると オプションの間隔が広がる(狭まる)でしょ? その時にスピードアップ前に5個おきに参照していたのがスピードアップ後は 6個おきに参照とかなるじゃないですか。すると自機から遠いオプションは スピードチェンジ時よりも古い座標を参照する事になってしまうんですな。 ここでそうならないような補正をかけてるんだと思うけどその処理の違いが グラ1、2とかサラマンダのオプションの動きの違いになってるんでしょうね。 初代グラは単純なリングバッファとはかなり違う処理じゃないかな? スピードは一定で上下スクロールの無い場所でも オプションが自機の軌跡をきっちりたどっているわけではないみたいだから。 >>67 自機がスピードアップしたら 単位時間あたりの移動値もふえるわけだから 参照間隔そのままでも 移動値が増えればオプションの間隔は広がるよ。 そーいや,オプション4個目ってスピードによって反対方向へ行ったりするね… >>67 スピードアップした時に間隔が広がるのは、69が言うような理由のせいであって、 意図的にそうしたわけじゃないって開発者が言っていた。 >>70 開発者の話では、OPが自機を最短距離で追うようなプログラムになっているのが原因だそうだ。 つまり、自機が下のほうにあって、OPの4つ目が上のほうにあるような状況のとき、 画面の上と下は繋がっているから、OPの4つ目にとっては上に動いたほうが、最短距離で移動できる。 FC版ファンタジーゾーンのグラブンガーの腕 AC版サラマンダのゴーレムの触手 ACグラ2の2面の触手 SFC版グラ3植物面のボスの茎(って言うのか?あの部分は) これらはプログラムに共通している部分があるような気がする。 どれも動きがカクカクしているから。 何かパーツ毎に計算しているというより、 触手が通る曲線を計算しておいて、その上にパーツをのっけている感じ。 ↓仮にこれが曲線だとして ―――――――――――――― ↓その上にパーツを配置している。 ∋―○―○―○―○―○―○― 違います? dakara sono kyokusen no keisanhouhou wo oshietekure to iu sureddo da >>72 FANTASY ZONE 4面 ttp://isweb16.infoseek.co.jp/play/lur/fantasyzone/fantasy4.htm 新声社「GAMEST」 1990年分のグラIII 関連記事 ttp://www.geocities.jp/targest1989/gamest1990.htm レビュー第2回(グラディウスII) ttp://www.ne.jp/asahi/cc-sakura/akkun/bekkan/gura2.html レビュー第6回(グラディウス3) ttp://www.ne.jp/asahi/cc-sakura/akkun/bekkan/gura3.html レビュー第4回(フェリオス) ttp://www.ne.jp/asahi/cc-sakura/akkun/bekkan/ferios.html 水晶玉っぽいアイテム(ポム)を取得すると自機の後ろに連なっていく縦スクロールシューティングは何て言う名前だったか…。 >>72 上のは画面写真があるWebね。 |これらはプログラムに共通している部分があるような気がする。 |どれも動きがカクカクしているから。 |何かパーツ毎に計算しているというより、 |触手が通る曲線を計算しておいて、その上にパーツをのっけている感じ。 いや、当時のハード(FC版)から考えて、そんな計算コストが掛かる方法はとっていないはず。当時はシューティングで小数点を扱ったリアルタイム演算は鬼門だったから、三角関数のテーブル作って256方向(64かも)の座標計算だと思われ。 >>73 触手をより触手らしく動かすアルゴリズムじゃなかったのか…。 曲線からの位置取得ならベジェ(スプラインでもよく)曲線描ければ簡単に取得できるけど…画面を2〜3往復とかする豪快な触手ならともかく、数個の関節でベジェ使うのは大げさでしょ。 >>75 (・∀・)ビンゴ!! 即答できるキミは絶対若くないハァハァ。 ttp://www1.kcn.ne.jp/~gx770/arcade/geminiinst.jpg ttp://www2s.biglobe.ne.jp/~pera/gamerv/review67.html 画面写真はミツカラズ。 だめだこりゃ 三角関数って何だろうと思って調べてみたけど、ワケワカラン。 俺は触手を語れるレベルじゃなかった。 >>78 それ、やばすぎ。(´・ω・`)ショボー 最初はゲームで波とか円運動させる為のものぐらいに覚えとけば良いんじゃない? 使い方を理解してからサイン・コサインとはなんぞや?を学んでも遅くないぞ。 #あくまでもゲーム製作においては、だが。 漏れも学生時代学校の勉強は全くしてなかったクチなので三角関数とかチンプンカンプン。 他人に理屈抜きの式だけ教えて貰ってやってるけど、勉強しなくちゃなぁ・・・・ シューティングの敵が自分を狙って弾を打つとか基本的な部分から三角関数からんでくるからねー。 所詮ホビープログラマーなんで別にいいっちゃあいいんだけどやるからにはそこそこ自力でやりたいもんね。 昔三角関数を使わずにシューティング作っていたが 三角関数を使った途端いろんな動き作るのメチャクチャ簡単になって えらいうれしかったと同時に使わずに色々苦労してたのが泣けてきた… sin、cos、arctanぐらいは使えるようにしといたほうがいいぞ。 三角関数は高校の数学で習うので、中学生には難しいかもね。 あー、俺もリアル厨房の頃はぐちゃぐちゃのコード書いてたよ。 敵AIひとつ組むにしても、例えば ロックした目標の未来位置を予測 → 偏差撃ち をさせたくてもなかなか出来ない。で結局、人力で (距離→偏差角)の参照テーブルを作って誤魔化したり。 筋金入りのDQNだった。 俺はリア房の頃は、円周上を移動させるのにグラフに円を書いて 座標をマニュアル入力してたぞ。 sin関数を知った時の衝撃と言ったらもう… キタ━━━━━━(゚∀゚)━━━━━━ !!!!!って感じだった。 つーか、確認したいんだが、このスレいまだに上がり続けてるのは、 三角関数が解らないくらいのマジ厨だからだよな? (まぁ、それならマジでしょうがないが) たまにいる、いい年コイたクソ学生とか、足し算引き算以外はいつまで 経っても逃げつづけてるクソ専門校生とかじゃねぇよな? 根本的な話、三角関数知らないと、学生になれないはずですが。 学生のつもりだったのでしょうか。 妄想学生?仮面学生?ちんかすクセー? >>84 高校の数学で習うんだっけ?文系のクラスでも? 三角関数は知らないけど、 サインとかコサインって言葉は物理の授業で聞いたような気がする。 触手→オプション→触手→三角関数 >>88 三角関数を知らずに学生になり、 そして卒業しましたが何か? 三角関数って普通はどこの高校でも習うんですか? まぁぶっちゃけて言えば三角関数をちゃんとお勉強して知っている学生もいれば 三角関数は興味なく知らないがあんなことやこんなこともよく知ってる学生もいるってこった。 学生ん時遊んでた奴は今頃必要に応じて学ぼうとするし 学生ん時はお勉強くんだった奴は日夜半角板でネタ収集しダメ板で童貞を告白して傷を舐め合っている。 両者共今をエンジョイしていていいじゃないか。 ん?高校でも文系とかならやんないんじゃないか? っていうか、中学以上の数学の知識って結局実生活には必要無いからさ、 別に開き直って生活してても構わんとは思うけどモナー。 でもこれからゲームのプログラムやろうってのが、たかがサインくらいで 怖気づいてんのもどうよ。好きでやるんじゃないか? この板、自分より低レベルなヤシ目ざとく見つけては攻撃するヒッキーが やたら多いから、そういうのは無視してりゃいいが、プログラマでいちばん ウザいのは90みたいな嘲笑+自己完結+狭い視野の決定論だけみたいなヤシ な。ヒッキーやダメ学生が30代になってレベルアップするとこうなる。 オレとかナー。 >>91 俺は普通科だったけど、普通に習ったよ。数IIだったっけ? ゲームプログラムやるなら、必須だしね。 キャラの移動で既に必要だし。 3Dの回転行列の計算でも必要。 そこまで書くのはPS2ぐらいだと思うが。 テーブル参照による高速化は、メモリ食う割に、メインメモリに アクセスするから、実はあまりよくない。 で、PS2で式を変形させて高速化を図るってのをやってたのを 見せてもらったけど、良く解らんかった。UVコードだったし。 今月(先月)のCマガに載ってたような。 >そこまで書くのはPS2ぐらいだと思うが。 ??? >>92 >学生ん時はお勉強くんだった奴は日夜半角板でネタ収集しダメ板で童貞を告白して傷を舐め合っている。 ぐはっ(吐血 関係ないけど、sin^2Θ+cos^2Θ=1の公式って よく考えたら当たり前のことを書いてるにすぎないんだよなあ。 三角関数なんか普通に生活してて縁ないんだからしょーがないじゃん。許してよ。 高校生以下は"学生"ではありません。"生徒"です。 18歳以上で、まだ勉強してる連中を"学生"と呼ぶものです。 ちなみに小学生は"児童"だからね。間違えないでね、ボク。 "俺が学生のころは…"と高校時代を語るやつはサムイです。 >>100 その通り! でもどうでもいいって。触手!触手! どうでもいいじゃん。あほらし。 君、あれでしょ?そういう些末な事突っ込んで場の空気乱す人でしょ? たまにいるよねーウザイウザイ。 >>100 ところであんたこのスレに何の用があって見たり書き込んだりしてんのよ? >97 底辺の二乗+高さの二乗=斜辺の二乗だっけ? 111=112? 触手のアルゴリズムを本当に知りたくて書き込んでます? >>111 でageが入ったのでスレが浮上 →常駐している暇人の目にとまる。 →板相応スレ相応の駄レスが即行でつく。 程度の在り来たりの想像力ぐらい働かせたらどうかねsage >>115 なんでキミがあやまるんだ お前はこの板の神ですか >>116 メンタルストレスを溜めるのは良くないぞ。 >>117 なんか開発状況報告スレのせいで変なレスになった。スマン。 >>112 レベルの低い人がたててレベル低い人が多く書き込んだスレだからしょーがないね。 と、レベルの低い僕は思いました。 ぼちぼちレベルの高い人の低レベルな人にもわかるレベルの高いレスきぼん 何を教えて欲しいのかわからなきゃレス付けようがないよ 最近の3Dゲームではグラ系の触手って見なくなったね。 アニメーションで処理できちゃうからだろうけど。 無くなりつつある技術なのか? 俺もそう思う。 計算する座標が一つ増えるだけじゃないの? >123の不等式はよくわからんが 座標が一つ増えるだけで自由度が三つも増えるぞ だからなんだといわれてもぉ〜♪ 自由度は間接のほとんどを単なるちょうつがいのように2Dに限定すれば 問題ないと思うけど。回転が入ったり肩みたいな奴があるとかなりやっかい。 >>128 2Dの触手は細胞同士が重なってもアリとされてるけど、 3Dだと不自然に見える。その辺も難しいかな。 確かに。 ぶん回すと簡単に絡まりそうだよな。 ある程度はすり抜けを許容しないとダメかも。 話がそれるが、3D特有のスリ抜け問題は他にもいろいろ出てくるよね。 例えば、敵の撃った弾が他の敵をスリ抜けるのはアリなのかな? そういえばそうだな。 2Dだと気にならなかったが、3Dだとその辺のすり抜けに違和感を感じるわ。 すり抜けられないと、同士討ちを回避するAIを組む手間が増える 小さいキャラならすり抜けても目立たないのでは? 弾は表示の優先順位で常にプレーヤーからみて手前に描くとか。 >>134 3Dでそれをやると発射台・障害物・弾が一直線に並んだ時正面から見るとおかしくなる。 >>142 すげーじゃん。 ソース公開してください。 おねがい。 >>149 ああ、トロイってそういう意味か 147さんボケェっていってごめんなさい。 >>146 自分で考えろボケェ! >>148 ,151 いや、私の完敗です、スマソ しかし、怖くて実行できぬ。 おお!とうとう実践的な方が降臨されましたな! ソース激烈にきぼん。 思い切って実行してみた。 単なるIKの2D版じゃんとオモタ ────── 、 / \ ノ .\ ( .ヽ / , ─── 、 , ──-、 / | ,--;;,,, |,─、| ,,;;--,| | | \●\ ├- | /●/ | | |  ̄ ̄ || | ` ̄ ̄__| |  ̄ ̄ ̄ ̄ | |  ̄ ̄ | | (_,ヽ_/、) , ........、 \ ∪ _ ....:::::::::::::::、 \ /(_)-- 、::::::::::、 ヨンダ? _ \ (_/ \::::::: ( \ \ / / ̄) \ ) ──、____,- / / ( 丿 /:::: \ ( ( \ \_/ /) ) /|\ )( ( \_/ / (___//,/ )( ( \ )\\___) ( ̄ 、___//丿| ) ) ) ( ( ( ( \___// ) ) | ) ( ( ( ( ( ( ( ( ( | ) ) ) ) ) ) 丿 丿 ) ) ( ( \ ) ( ( 丿 丿 ) ) ) | ) ) / / | | | ) ( ( ( ( (_/ (_/ (_) \_) \_) >>159 こんなの ttp://www.urban.ne.jp/home/tecmac/badgara/img/aya003.jpg 俺が今までに作ったゲームでは三角関数をよく使ったような… (数学よりも物理で習った方法で利用) >>99 許せる。 ぐはっ。2ちゃん慣れしてないことがバレバレ。 ネタだと思わんでくだされ。 >139 これっていわゆるAB法では? これは典型的なIKと呼ばれているんですかね? 紐シミュですよね? AB法? 実は俺プログラムやシミュレーションに関しては素人なので よくわかりません。 >139 AB法ってのはkaneko氏がAnimeBodyというプログラムで用いたやつです。多分 各リンク点間をその距離で普通に拘束する感じだったと思います。 あえて名づけている意味が解りませんが。。。 ごく一部の人の間ではAB法。 広く一般にはmass-spring法などと呼ばれているような気がする。 でもIKとして使って問題ないんですね。 失礼しました。 手 | | 手 肘 x2=90 / / / / 肩----肘----手 > 肩----肘 > 肩 x1=0 x2=0 x1=0 x2=45 x1=45 これでみたとうり部分部分で、角度の値を持たせるというのが、多関節 (簡易な)といったとこでしょうか(^^) 手 | | 手 肘x2=90 / / / / 肩----肘----手 > 肩----肘 > 肩 x1=0 x2=0 x1=0 x2=45 x1=45 これでみたとうり部分部分で、角度の値を持たせるというのが、多関節 (簡易な)といったとこでしょうか。 うーむ。絵がずれるねー。いやーん。 (Module.bas で 定義) Type rect obj As Integer ang As Integer End Type Sub Kansetu_Click () Const SHOULDER = 1 ' 肩 Const ELBOW = 2 ' 肘 Const HAND = 3 ' 手 ReDim x(4) As Single ReDim y(4) As Single ReDim an(10) As rect ' データ構造 ' データ an(0).obj = 0: an(0).ang = 0 an(1).obj = ELBOW: an(1).ang = 30 an(2).obj = HAND: an(2).ang = 45 an(3).obj = SHOULDER: an(3).ang = 25 an(4).obj = ELBOW: an(4).ang = 40 an(5).obj = SHOULDER: an(5).ang = 30 an(6).obj = HAND: an(6).ang = 60 an(7).obj = SHOULDER: an(7).ang = 45 an(8).obj = ELBOW: an(8).ang = 60 an(9).obj = -1: an(9).ang = 0 p = 3.14156 / 180 ' π h = ScaleHeight / 2 ' Form の 高さ w = ScaleWidth / 4 ' Form の 幅 sl = 250 ' 肩の長さ el = 300 ' 肘の長さ hl = 200 ' 手の長さ c = 5: ' 色 j = 0:oan1=0:oan2=0:oan3=0 Do If an(j).obj = -1 Then Exit Do Cls Select Case an(j).obj Case 1: an1 = an(j).ang + oan1 ' 肩を動かす an2 = an1 + oan2 an3 = an2 + oan3 oan1 = an1 Case 2: an2 = an1 + an(j).ang + oan2 ' 肘を動かす an3 = an2 + oan3 oan2 = an(j).ang Case 3: an3 = an2 + an(j).ang + oan3 ' 手を動かす oan3 = an(j).ang End Select x(0) = 0: y(0) = 0 x(1) = Cos(an1 * p) * sl: y(1) = Sin(an1 * p) * sl x(2) = Cos(an2 * p) * el: y(2) = Sin(an2 * p) * el x(3) = Cos(an3 * p) * hl: y(3) = Sin(an3 * p) * hl ' 線を描画 Line (x(0) + w, y(0) + h)-(x(1) + w, y(1) + h), QBColor(c) Line -(x(2) + w + x(1), y(2) + h + y(1)), QBColor(c + 1) Line -(x(3) + w + x(2) + x(1), y(3) + h + y(2) + y(1)), QBColor(c + 3) j = j + 1 MsgBox "Push Next" Loop End Sub >>173-175 これはVB? Cで慣れてるからキモチワルイ感じ。 >>178 ビミョウな違いがかえってキモチワルイ。 シンタックスエラーに敏感なんです。 >178 なるほど・・・・ 大して変わらないから、逆にキモチワルイのね(w 計算すると時間がかかるから、なるべくデータをテーブルで持って やりたいんですけど、どうしたらいいでしょう。 >>182 データをテーブルにもってくださいと言うほかないけど・・・? 起動時にテーブルを作成するとかあらかじめ作成したテーブルを埋め込むか データファイルとして読み込むか一度計算した内容をテーブルに保存して次からはそれを使うとか いろいろ考えられる方法はあるんだけど o /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / このスレは無事に / / 再開いたしました / / よろしくおねがいします。/ / / / ギコ猫より / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ∧_∧ / /∧_∧ ( ゚Д゚)./ /(゚Д゚ ) ( )つ ⊂( ) | | | | | | (__)_) (_(__) o /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / このスレは完全に / / 終了いたしました / / ありがとうございました / / / / ギコ猫より / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ∧_∧ / /∧_∧ ( ゚Д゚) / /(゚Д゚ ) ( )つ ⊂( ) | | | | | | (__)_) (_(__) Googleで探したけど、IKってなんか サンプルプログラム少ないね。 >ペアレント ・・・「親」? すまん。それは親子関係という意味か。 (しかしIKにも親子関係はあるしな・・・) 順運動学のことか。あるいは特定ツールの用語か。 おかんにコーディングしてもらうって意味だったりして。 >ペアレント おそらくLWなどの邦訳版リファレンスに登場する造語だろう。 そっち系のツールを使う人間は「○○にペアレントして〜云々」 というような表現を用いる場合がある。 ボーンや親子関係を定義することを意味するらしい。 ツール固有のローカルな表現ゆえ、一般には通用しない。 ttp://www.martinb.com/physics/kinematics/joints/index.htm 最初のサラマンダのドラゴンの動きはなんかぎごちない グラIIからは割とぐるっと時機を囲んでくれる パターン数が少なかったからでは? パイプの連結みたいな形だったような・・・覚えて無いけど。 グラVのスネークオプション・・・ アーケード版とSFC版で動きが全く違うようだが・・・ どういうアルゴリズムになっているんだろう・・・ 「慣性が働くオプション」と説明されてはいたが・・・ とくにアーケード版なんか つけた瞬間は自機からとんでもなく遠い位置に出現したりするんだが ActionScriptでお願いします。 もしくは作例があれば教えて下さい。 お願いします。 連立方程式で計算できそうなもんだけど。 どうなんだろう? 波の奴とフェラエッチ数列みたいな奴を組み合わせて良い感じに出来ないか誰かためすて。 ちょwwwおまwwwwwww フェラエッチ数列ってwwwwwwww ・・なにですか? おしえてください。 気になって昼間眠れないじゃまいれすか!wwww >>206 ほら、前の数と自分を足して次の数とするってやつ。フェラエッチ。 昼間寝ちゃダメだよ。 >>209 「アプリケーションを正しく初期化できませんでした」エラーでしたのだったのですよってばえっち .NET で作ったからそれ関係かしら? 実行できなくてもごめんなフェラエッチ。 WinXPsp2じゃ無いと無理? うちはsp1だからNET1.1しかいれられない・・・ 解らないけど、VC8で作ってあります。から、.NET2じゃないと無理なんかな? つーか、対したもんじゃないっす。 フックの法則と単振動を元に関節?を作り、それぞれにフェラエッチで設定しただけっすから・・・・。 xpに.net2入れてやってみたら、オーバフローエラー ************** 例外テキスト ************** System.OverflowException: オーバーフロー エラーです。 場所 System.Drawing.Graphics.CheckErrorStatus(Int32 status) 場所 System.Drawing.Graphics.DrawLine(Pen pen, Int32 x1, Int32 y1, Int32 x2, Int32 y2) 場所 Tentacle.Form1.Form1_Paint(Object sender, PaintEventArgs e) 場所 System.Windows.Forms.Control.OnPaint(PaintEventArgs e) 場所 System.Windows.Forms.Form.OnPaint(PaintEventArgs e) 場所 System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs) 場所 System.Windows.Forms.Control.WmPaint(Message& m) 場所 System.Windows.Forms.Control.WndProc(Message& m) 場所 System.Windows.Forms.ScrollableControl.WndProc(Message& m) 場所 System.Windows.Forms.ContainerControl.WndProc(Message& m) 場所 System.Windows.Forms.Form.WndProc(Message& m) 場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) つーか気になるッス おまえ、4年間ずっと人まかせにして待ってたのか?・・・ よし、@4年このスレが残ってたらオレが教えてやる! 助けになりたいが 触手と聞いてエロ目当てに迷い込んできた俺には 何も教えることはできない。 今日からここはエロ触手スレに生まれ変わりました アルゴリズムも糞も関係ない手描きアニメだけど 天外魔境2の木のお化けみたいな奴の触手の動きはエロかった ヒュンヒュン!とクールなSEもついてたし ■先端の動き 1.先端から付け根までの最大距離を決める。 2.先端を右か左に傾かせ、より自機と近くなる方を選択。 3.先端から付け根までの距離を伸縮させ、より自機と近くなる方を選択。(0〜最大距離の範囲) ■途中の節の動き 1.最大距離に応じた節の数だけ配置する。 2.先端より一つ根元に、以前向いていた方向を継承する。 3.先端から根元の現在距離を節数で割り、節毎の距離をセットする。 ■根元の動き 1.自機のいる方へ縦横に動く。 2.すべての節に、根元が動いた縦横移動値を加算する。 おーい、俺も何年か前からエロいスレと間違えて 何度もここに迷いこんだが今日初めてスレ読んだ… 一はまだ閲覧してるかwwwwwww夢をありがとうなwwwwww 落としてないからわからんが ソースコードがほしいってことかな そーいやまだ多関節つくったことねーなー ニコ動の『2ch面白いレス集』で伝説となったスレと>>1 はここか 普段どんなことしてるんですか? それと「手」でいいんですか? スプライン曲線やベジェ曲線をCで組まなきゃならないんだが 推薦図書とかあったら教えてください 簡単にやり方が説明できるならこの場で書いてくれてもいいです スプライン曲線とか使わないでもIK使えばいいんじゃね? >>255 IKって何ですか? 略語だったら略さずに書いて教えてくれませんか? それか解説のあるURLおながいします。 >>256 >略語だったら略さずに書いて教えてくれませんか? なんか横柄に聞こえてしまう俺は心狭いのか。 俺もそう読める。 これは言い方がまずいな。「略さずに書け」って命令だから。 「もし略語なのでしたら正式名称はなんと言うのでしょうか?」 なら印象も多少は違うのではなかろうか。 まあ横柄にもなるだろ IKを知ってるやつだったらしないような質問をしてるやつに 正式名称が特定できないようなヒントを与えるなんて イヤミな奴の意地悪にしか見えんし おまえはC++スレで何でもかんでも聞く奴だろ? 横柄云々より礼ぐらい書けとおもう 今ははググレばすぐわかることだが本当に調べても わからない時に誰も答えてくれなくなるぞ スプライン曲線 IKでググレばすぐでるだろ 先端をコントロールして、間をキネマティクスで制限をかける 意味が理解できない奴は勉強しる 勉強の仕方がわかんない奴は諦めれ ほら答えでたよ シューティングゲームアルゴリズムマニアックスと言う本で さらっと解説されてたようだったけど。 とマジレ酢してみるが、此処はネタスレっぽいな。 >6年以上の間、なにやってたの? 仕事や遊びやH…普通の生活をしてました プログラミングとは全然関係ない仕事ですしサンデープログラマーと言うにもほど遠いので 基本的にこの件については「何も考えていない」期間がほとんどでした ふとまた何か作ってみたくなってこの板に来たらまだこのスレがあってびっくり で、手は動かしてないけど頭の中でなんとなく思いついた結論は… ・先端は自機を追いかける ・腕の部分はひとつ先端側のお隣さんを追いかける ・腕パーツ〜先端はそれぞれ付け根から遠ざかれる半径を制限する これでいけそう? 各パーツごとに1フレームあたりで動ける距離を制限したり決めてやると色んな性格の触手君が作れそう サラマンダやグラディウスIIIなどの「復活する細胞」のアルゴリズムを教えてください>< 自機が撃つと消え、一定時間が経つと復活する壁のアレです コンシューマー機移植版のように完全に復活するのは簡単にわかるのですが オリジナルは撃つ前と復活後が違うんですね 完全に元通りにはならない 意図的にそうなるようにそういう性格付けをしてやれば再現できるかとは思いますが あれらは実際どんなアルゴリズムだったのでしょう? 実際どう変わるのか知らんが 撃たれた位置なんかを覚えといて その情報を元に型を変えるとかじゃね? どんなキャラなのか知らんが 「撃たれて”消える”」にこだわらなければどうとでもなるような。 撃たれたら一定時間見えなくなって当たり判定もなくすだけで消えたと同じ事でしょう。 >>269 自機の後ろがじわじわ復活してくるのは実に絶妙だったね 一本道を空けた場合でも、常に後ろから復活するんじゃなくて、 途中が先に復活することもあるんだよね ■■■■■■■■■■■■ ■■■■ ■ ■ ゆ■ ■■■■■■■■■■■■ こんな感じ。オプションが関係してたのかな・・ 完全に元通りにならないってのは、最初の細胞壁と、 復活した細胞は別のオブジェクトだからだろうね スプライトの表示順番が変わって変化してるように見えるだけじゃね? いいね 総合してみるとあんまり美しい動きじゃないところが実にサラマンダっぽい >1が、6年かけて自分で考えることをはじめたのに感動。 小学1年生が卒業して中学生になるほど長いんだよな。 >>1 単に隣とのフックの法則か v[i] += k(x[i-1]-x[i]) + k(x[i+1]-x[i]) x[i] += v[i]. (ただし x[N] = 自機, x[0] = 固定タン は強制的) 節同士重なるのが嫌なら反発項入れて v[i] += k1(x[i-1]-x[i]) + k2(x[i+1]-x[i]) //吸引項 -k1(x[i-1]-x[i])^3 - k2(x[i+1]-x[i])^3 //反発項 とかね。回転とかの概念までは必要なし。 >>269 単に壁ごとにひとつひとつ復活カウンタが付いてるだけでしょう 自慢じゃないが初プレイ時ひとつめの細胞が生き返った瞬間にアルゴリズム分かった >>281 復活画面位置の裏側で待機、倒した背景位置がそこにきたら復活 >>280 サラの復活壁はそんな単純じゃないと思う だからこそ質問者も質問してるんだと思うが。 当たり判定だけはそれで合ってると思う そして誰でも思いつく 自慢じゃないが初見で>>280 がバカなのは分かった ベーマガでAM2研の人が解説してたなー N88BASICで触手が動いたときは感動した 三角関数がわからん俺には意味不明だったが 台湾の超人気グラビアモデル、アリエル・チャンの元カレが撮影した プライベートセックス動画が流出で、台湾全土の男性が騒然としてホクロ等から本人確認、 どうも間違いなく本人の猥褻ビデオだったようえす。 (無修正なので閲覧注意) http://www.idolnyuus.tk/ariel00.html 簡単にお金が稼げる方法興味ある人だけ見てください。 グーグル検索⇒『来島のモノノリウエ』 YKTYV4COUV こんな動き https://t.co/Fn5kQXprRW 👀 Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01) 1はまだ生きてるか? >>244 を書き込んでからもう11年経っていたよ 1がここまで古いスレ始めてみた まだパソコン持ってない時期だ read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる