EasyFAQ/41

Last-modified: 2008-10-14 (火) 01:42:37

モデルデータの上昇と下降

投稿者GO
重要度
状態
カテゴリ
HSPバージョン3.1
E3Dバージョン3034
回答

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

  • 3Dのロボットシューティング系のゲームを課題で作っているんですがロボットの上昇、下降がわかりません>< -- GO? 2008-10-07 (火) 22:47:31
  • まだ地面を走るだけなので空中に浮かす方法とかも教えていただければありがたいですm(__)m -- GO? 2008-10-07 (火) 22:48:39
  • 地面と当たり判定をする命令でキャラの真下の地面の高さが取得できますので、それで取得した値より、キャラが低い位置にいる場合、その地面の高さにキャラの位置を合わせる、という方法で、地面とは当たり判定をしましょう。E3DPosongroundでやると絶対に地面から離れられませんが、これなら地面から離れられます。そして、E3DSetPos posx,posy+上昇スピード, posz で上昇、上昇スピードの中を-の値にすれば下降します。if文で、キャラの真下の地面の高さより高ければ、自動的に下降するようにすれば、プレイヤーが操作しなければ落下するようにできます。 -- rain? 2008-10-08 (水) 20:34:53
  • すいません。初心者なんでよくわからないんですが、地面との当たり判定はE3DChkConfGroundをつかっています。E3DSetPos posx,posy+上昇スピード, poszをどこにセットするかがよくわからないのと、if文を使って例えば”Zキーを押せば上昇、Xキーを押せば下降”という感じにできますか?目指しているのはこのサイト→http://www.geocities.jp/tintiroring2/のHSP項目のUntitled Game2の中の2005/1/6の記載のDOWNLOADから取れるwitch3見たいな感じの動きを目指しています。色々ゴチャゴチャですいませんm(__)m -- GO? 2008-10-09 (木) 00:30:54
  • 何について初心者なのか明確にしてください。この質問の仕方ではgetkeyやstickにから説明すればいいのか、confgroundについて言えばいいのか、質問の仕方から指摘するべきかエスパーでない我々にはまったくわかりません。 -- kain? 2008-10-09 (木) 11:01:47
  • 3Dゲームクックブック見ながら作ってるんでほんとある程度はわかるんですが、今は上から3つ目の説明文の”取得した値より、キャラが低い位置にいる場合、その地面の高さにキャラの位置を合わせる”がよく分かりませんでした;;で、キャラの真下の地面の高さはE3DChkConfGroundであってるんでしょうか? -- GO? 2008-10-09 (木) 17:00:04
  • わかりました。キャラを浮かせるのに最低限必要な変数は4つです。位置座標のx,y,zに加えて高さを保存しておくhが必要です。E3DchkconfGroundの床すりモード、ロボがマップ上にいれば低かろうが高かろうがかならず該当する地面の座標を返します。キャラを地面から100はなれた場所に置きたい場合はまずChkconfGroundで地面上の座標を求めた上でy座標に高さh=100を足した上でE3DSetposをしてください。rainさんの返答と殆ど言っている事は同じです。 -- kain? 2008-10-09 (木) 21:19:35
  • すいません、上昇と下降は解決しました>< え~、ですがねぇ・・・上昇や下降中に前に進めないといった事態になったのですが、これについてはどうすればよいのでしょうか・・・ -- GO? 2008-10-09 (木) 23:49:54
  • 前に進む処理について1ミクロンも書かれていないので何も答える事ができません。 -- kain? 2008-10-10 (金) 01:40:55
  • 前に進むのはE3DPosForwardをつかってます。 -- GO? 2008-10-10 (金) 07:48:37
  • とりあえず処理の順序を確認してください。beforepos→移動処理→地面と当たり判定→...の繰り返しです。上昇や下降中のみ前に進めないというならキー入力のあたりも確認すべきです。情報が少なすぎるのでこれ以上の指摘は無理です。 -- kain? 2008-10-10 (金) 10:45:32
  • キー入力のあたりとは例えばどんなものですか? -- GO? 2008-10-10 (金) 17:54:50
  • キー同士が同時押しされた時にきちんと検出できているか調べるという事です。 -- Kain? 2008-10-10 (金) 20:16:31
  • 横からすみません。ここのサイトからリンクのある GENKIさんの"GENKI's HOME PAGE"で「キャラクターを移動する(空を飛ぶ)」サンプルを参考にしてみてはどうでしょうか?  -- sss? 2008-10-11 (土) 01:33:46
  • >kain えーっと、どうやって調べればいいんでしょうか・・・?なんかめちゃくちゃ初歩を聞いてるようですみません;;    >sss あれもみたんですが自分の思ってるのとは違いました。 -- GO? 2008-10-12 (日) 18:43:52
    • 注目すべき点は、同時押しすることである処理が飛ばされるようになってたりしてないかという点です。
      キーが同時押しされていると考えて、スクリプトを追いかけて行けばokだと思います。
      あるいは、dialog命令や、title命令を使って何処まで処理が進んでいるか、処理が飛ばされていないか確認出来るようにして、実際に2つ以上のキーを同時押ししてもいいでしょう。 -- GENKI? 2008-10-12 (日) 20:26:43
  • 失礼しました(^_^; 物理エンジンつきのをイメージしてるのかな?いづれにしても kainさんが指摘した箇所をクリアしなければなりませんね...(^_^;) -- sss? 2008-10-12 (日) 19:54:44
  • >>GOさん ではこれではどうですか?キャラクターを移動する(ジャンプ)
    >>sssさん 物理エンジンですか、一応らしきものは昔作りました。 -- GENKI? 2008-10-12 (日) 20:16:01
  • >>GENKIさん そちらのジャンプを試してみました。えと、それを起動させて動かすとタコが前に進みながらジャンプってできるじゃないですか。それはどうやってるんですか?今そこが分からないんです;;自分の作ってるスクリプトはあの*MoveCharaのジャンプさせる所がジャンプじゃなくて if keybuf( 'Z' ) != 0 : E3DSetPos hsid1, posx, posy+200, posz :eventno = 1っていうふうにしてあります。これでモデルを上昇させるようにしました。これで起動させて動かすと上昇するし前進んだり出来るんですが前に進みながら上昇ができません;;今まで言ってたのはここの同時押しのことです。これは*MoveCharaのif文内で処理(?)するものなのか他のとこでするのか・・・;;またゴチャゴチャしてすいません>< -- GO? 2008-10-13 (月) 01:02:40
  • E3DSetPos,E3DGetPosの順番で動かなくなるときがある、posx、poszに問題があるってこと。E3DSetPosの後にE3DPosForwardを使えば前に進むと思う。 -- 2008-10-13 (月) 01:30:37
  • ジャンプのサンプルでよかったようで、よかったです。あとは自分のスクリプトと、サンプルのスクリプトをよく比較して、何処が違うのかを見つける作業ですね。見つけたらどうして違うのか、サンプルはどのような考えで作られているか考えてみてから、自分のスクリプトに反映すると上手くいくんじゃないかと。 -- GENKI? 2008-10-13 (月) 03:25:49
  • ボタンが押されるたびに逐一E3DSetposが呼ばれていると推理しました。折角前進ボタンをおしてE3Dsetposをしたのに、Zを押した時にそのまま古い座標のx,y+100,zでE3Dsetposをしていないか全力で確認してください。 -- kain? 2008-10-13 (月) 20:08:09
  • 皆さんありがとうございました(*´∀`)完璧に解決できました!!ここまでゴチャゴチャな質問に付き合ってくれまして本当に感謝ですm(__;)m頑張って課題完成に更に近づこうと思います!!ありがとうございました(^^)ノ・・・また質問がでたらそのときはお付き合いお願いします++; -- GO? 2008-10-14 (火) 01:42:22