EasyFAQ/73

Last-modified: 2009-06-06 (土) 06:37:08

Easy3Dで「壁のぼり」は作れるんですか?

投稿者こういち
重要度
状態
カテゴリ
HSPバージョン3.1
E3Dバージョン
回答

ここから下を自由に編集してください。
上の投稿情報は安易に編集するとFAQリストのリストアップに支障が出るものもあります。
よく分からない方は分かる人に聞いてみてください。

  • 僕は今ストリートファイターのような「2D格闘ゲーム」を作っています。もちろんキャラは3Dです。→で右ダッシュするのですが壁に当たるとそのまま壁を登るよう(よじ登るのではなく、キャラが90度回転し、今のままの形でダッシュを続ける)ような感じにしたいです。メタセコイアでステージを作る際にまず床を作るじゃないですか?その延長線上として垂直の床(それを壁とする)感じで作ったらうまくいきませんでした。どうやったらできますか?教えてくれるとうれしいです!お願いします! -- こういち? 2009-06-03 (水) 14:10:03
  • 作れるんですか?] -- rain? 2009-06-03 (水) 17:49:37
  • (ミスった)作れるんですか?という質問はゲームプログラミングの世界ではあまりないような気がしますが。作れるも作れないもあなたの腕次第です。この程度のことは別に特別な知識は必要ないと思います。発想の問題です。どうもあなたは発想がズレているというか、そんな感じの印象があります。自分でできるまで考えてみてはどうでしょうか。 -- rain? 2009-06-03 (水) 17:53:50
  • 前にも同じことを言われたことがあります。本当に僕自身反省しなければいけない点だと感じます。僕はゲーム作りたいって気持ちはあるんですが、才能がもしかしたらないのかもしれません。本当にご迷惑でなければこの垂直な壁をダッシュするという仕組みを作るにはどのような発想転換が必要なのか教えていただけるとうれしいです。僕自身せいいっぱい考えてもわかりませんでした。もしよければ皆さんだったらどうやったら作るかというのを簡略的でいいので教えていただけると発想の幅が広がるので本当にご迷惑でなければ教えてください。お願いします (--; -- こういち? 2009-06-03 (水) 20:10:45
  • 壁に当たったかの判定がまず必要。 垂直にのぼってるように見せる方法になりますが、e3dsetdirで向きを変えるとか・・ -- 26℃? 2009-06-03 (水) 23:02:03
  • 結局教えてくれって言ってるだけじゃねえか。  まず極めて壁に近い坂を作る。そこにキャラを歩かせつつ、地面の法線ベクトルとキャラの上向きのベクトルをちょちょいっとやりゃあできる。まさか反省しておきながら「法線ベクトルって何ですか」なんてココに書くことはないだろうが、わからねえ事はGoogleで調べりゃ出てくるんョ。 -- ナナ? 2009-06-04 (木) 01:07:40
  • ありがとうございました。厳しい言葉こそ僕のためを思って言ってくれているのだと思うと感謝でいっぱいです。本当に反省します。自力で探してゲームを作るからこそ新たな発見があるし、自分を成長させるのだと考え直しました。Googleでこれからは自力で頑張ってみます。本当に感謝します。全く関係ない話になってしまうのですが僕が今もっている書籍としては3Dゲーム・クックブックくらいです。この本は大変重宝しています。これも本当は自分で調べることなんですが皆さんがこれ以外にオススメできる参考書があれば教えて欲しいです。でもこれも自分で探してみるのでよければで構いません。本当にありがとうございました (^^) -- こういち? 2009-06-04 (木) 10:21:23
  • 私の場合ですが、似たようなことをやっているゲームをじっくりと観察したり、サンプルを弄くり回してどの部分がどういう風に出来ているのかを調べたりしてます。自分も法線って何?ベクトルって何?というレベルのところからのスタートなのですけど、ここら辺は参考書というよりネットで調べ、実際に適当にプログラムで作ってみると早く理解できるかなと。 -- yamamoto? 2009-06-04 (木) 14:52:49
  • 自分がやりたいことに近いサンプルを探し、中身を調べるのも一つの方法です。たしか地面の法線方向に身体を垂直にするサンプルがあったはず…。本は私の場合、3Dゲーム系はクックブック以外持ってませんね。あるのは3DCG関連の数学本と高校で使った数学と物理の教科書ぐらいです。 -- GENKI? 2009-06-04 (木) 21:32:26
  • これは特におかしい質問ではないと思いますよ。E3Dでは地形に沿って地上を歩くような移動には、まずはなんと言ってもE3DChkConfGroundの”地面を歩くモード”がおすすめです。
    しかし「まずはそこまで」に特化した機能なので、小さな垂直壁は階段として乗り越えます。その大きさは自由に設定できますが。それとE3DChkConfWallの不可侵領域設定機能を組み合わせて地形移動を行う設計です。
    垂直の壁をタタターッと登るような、より自由度の高い空間表現には”空を飛ぶモード”で当たり判定を行う必要が出てきます。befposとnewposを結ぶ線分で地形ポリゴンとの当たり判定を行えば、垂直壁やオーバーハングとの判定も可能なはずです。
    後は法線情報に沿ってキャラクターを回転させ、傾いているキャラクターの直下方向にダミーオブジェを置くなどして(いわいるレイを飛ばす)、キャラクターの足元方向の地形ポリゴンに吸着させるなどの処理を加えればいいと思います。
    ただし「キャラクターが完全に壁に正面衝突してからバッタリと床に倒れるように方向転換し、そこから壁を駆け上る」というだけでは見た目が不自然になってしまうかも知れません。キャラクター前方にもチェック用のレイを飛ばして「ダッシュ中に前方レイが当たったらその時点で方向転換」とかちょっとした工夫を入れる必要が出てくるかも知れませんね。
    正直言ってめんどくさいですけどね(笑)。こう言う部分でトラブルが連発して製作が進まなくなると非常にうんざりしてしまう事もあると思います。が、この辺の完成度上げをやるかやらないかで最終的な評価が大きく変わる事もあると思いますので、できそうな所からやってみましょう。
    他のやり方としてはゲームデザイン上2D表現のスタイルをとると言う事ですから、左右の壁部分に個別のウォールを設定してイベント発生として扱い「右ウォールに当たったらキャラクターと進行方向を左に90度回転させる」などのやり方も浮かびますね。「ちょっとマンガチックに壁を駆け上る表現をしたいだけ」と言う場合ならこう言うやり方の方がいいのかもしれません。
    当たり判定は初心者さんが考えても「できるだけ軽く仕上げた方がいいんじゃないの?」と思える部分ですよね。E3Dは多彩な判定機能を用意して下さっています。「線分とポリゴン面との当たり判定」「線分と球体界との当たり判定」「パーツのバウンティーボックス単位で計算する精度の高い当たり判定」などなどです。
    処理を軽くする為にはこのあたりを理解して作品に求められる機能を実現する必要があります。
    マップの一部を切り出して.sigオブジェとして判定を行うなんて手もありますね。「こう言うやり方でやってみたよ!」とアイデアの見せどころとも言えますから、楽しんでやりましょうね♪ではでは。 -- ロケットナマコ? 2009-06-05 (金) 01:00:48
  • yamamotoさん、GENKIさん、ロケットナマコさん回答ありがとうございます。特にロケットナマコさん、本当に感謝します。詳細でしかもわかりやすくて・・正直目から鱗でした。発想の幅が広がりました。本当に本当にありがとうございます。僕もこれを機会に質問ばかりでなく、自分で考えることも進んでやってみようと思いました。でもまた来ることもあるかもしれません。その時はよろしくお願いします。 -- こういち? 2009-06-05 (金) 10:42:32
  • ロケットナマコ =pupepo -- 2009-06-05 (金) 17:07:47
  • ちなみに3Dを扱う上では、レイ(ray)とは光線(半直線)と言う意味です。ダミーオブジェクトをレイと言うのはちょっと問題があるかなと思います。しかし書いてある内容は間違って無いと思いますのであまりおきになさらず。
    さらにちなみに、Easy3Dでは半直線(レイ)は無理なので、線分との判定としてレイをとばしたり出来ます。(例:E3DChkConfLineAndFace)
    それと追伸。ロケットナマコさんへ。適度に改行入れてくれると読みやすくなって助かるのですが。 -- GENKI? 2009-06-05 (金) 23:00:12
  • >その時はよろしくお願いします。
    こちらこそです。
    >適度に改行入れてくれると読みやすくなって助かるのですが。
    「ちょっと長い文章になってしまって我が物顔って感じかなぁ?」と感じて、なんとなく改行ナシにしてしまったんですが、やはりあった方がいいかもですね。
    時々ターボがかかって1人で暴走してしまう事もあるけど、この人とはこう言う人なんだと思ってもらえれば助かります。 ではでは。 -- ロケットナマコ? 2009-06-06 (土) 06:24:04