HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0903
fall3DSTGを作って見たいと思いまして・・・16解決


fall

リンク

2012/9/3(Mon) 17:18:45|NO.49074

どうも今日は、fallです。今日はエースコンバットみたいなゲームを作りたいと思いまして
やってみたんですが、ところがどっこい。うまくいかないじゃありませんか。
ぼくにはどうしたらいいか分かりません(学校で習ってません)。すいません、あんな感じに
動かすスクリプトを教えてください、お願いします



この記事に返信する


spider

リンク

2012/9/3(Mon) 17:55:51|NO.49078

3Dシューティングか。
めんどくさいから作ってないな………。
3Dの基礎が分かってれば2Dとおんなじだよ。簡単なものを作るならね。



とおりすがり

リンク

2012/9/3(Mon) 19:34:51|NO.49084

3Dゲームを作るのは、一般的に言ってかなりハードルが高いです。
HSP の知識だけでなく、プラグインの使い方や、3Dの専門用語なども知らなくてはなりません。

fall さんのプログラミングのスキルがどの程度か こちらにはわかりませんが、
これから3Dプログラミングを目指す方には、少しずつステップアップする方法をお勧めします。

1.まず HSP のプログラミングに慣れる
2.2Dのゲームを製作してみる
3.3Dモデルを使って2.のゲームを3D化してみる
4.最初から3Dを念頭においたゲーム製作に挑戦する



fall

リンク

2012/9/5(Wed) 06:40:03|NO.49145

2DのゲームやHGIMG3 を使ったY座標に動かさないゲームならならいくらでも制作出来るのですが…



KA

リンク

2012/9/5(Wed) 10:15:43|NO.49146

まず、Y軸方向に動かすことが出来るように成りましょう。
3Dは、それにZ軸が加わります。



fall

リンク

2012/9/5(Wed) 16:34:16|NO.49152

そうゆう意味では無く、レース系のゲームしか作れないとゆー意味です



あり

リンク

2012/9/6(Thu) 10:01:38|NO.49169

>あんな感じに
というのが不明確なのでエースコンバットのどういった動きを
作りたいのかを説明してもらわないと回答のしようがありませんね。

・単に一人称視点で3D空間を移動させたい。
・物理法則に基づいた軌道を描きたい。
・リアルなミサイル表現がしたい。
・敵の行動アルゴリズムを再現したい。

・・・等、目的が分からなければ回答者側は全ての可能性を
考慮する事になり大変非効率ですのでまずはやりたい事を
具体的に説明してください。



fall

リンク

2012/9/6(Thu) 17:30:03|NO.49175

単に一人称視点での動きを再現したいのです。
それが分かれば後は適当にどうこうなるので



暇人

リンク

2012/9/6(Thu) 19:59:32|NO.49177

ジンバルロック問題なのかそれ以前の問題なのか分からないが・・・

http://www.geocities.jp/inaeggmon/hgimg3/03-03.html
ここの objrotfv.hsp を使わせて頂いて

#include "hgimg3.as" #include "objrotfv.hsp" screen 0,640,480,0 hgini setfont 16,16,12,1 ; font Tex select(cx,cy,px,mode) texload dir_exe+"\\sample\\hgimg3\\fontchr.bmp" ; フォントテクスチャの登録 setuv 0,0,128,128 addmesh m_mesh,1,1,16,300,300 texload dir_exe+"\\sample\\hgimg3\\btex.bmp" regobj obj_mesh, m_mesh addbox m_model,1,1 regobj my_obj, m_model setcolor 0,255,0 addbox m_modelg,1,1 repeat 200 regobj obj, m_modelg ; オブジェクトの登録 setpos obj,rnd(400)-200,-rnd(200)-20,rnd(400)-200 loop clscolor $80 ; 背景色の設定 cammode CAM_MODE_NORMAL my_x=0.0 my_y=-25.0 my_z=100.0 mrx=0.0 mry=0.0 mrz=0.0 //スペースが押されてるときだけ使用 cpos_x=0.0 cpos_y=-2.0 cpos_z=10.0 p=(atan(1)/90) *main stick key,$3ff if key&128 : goto *owari hgdraw ; 描画 fprt strf("my_x=%6.1f my_y=%6.1f my_z=%6.1f",my_x,my_y,my_z),8,8 fprt strf("mrx=%6.1f mry=%6.1f mrz=%6.1f",(mrx/p),(mry/p),(mrz/p)),8,8+16 hgsync 10 ; 時間待ち ry=0.0 rx=0.0 rz=0.0 //ピッチング(上下) if key&2 :rx=-0.01 if key&8 :rx=0.01 if key&64 {//ヨーイング(Ctrl+ 左 or 右) if key&4 :ry=0.005 if key&1 :ry=-0.005 } else {//ローリング(左右) if key&1 :rz=0.01 if key&4 :rz=-0.01 } ; モデルを回転させる getang my_obj,mrx,mry,mrz //自機の角度取得 //ローリング処理 fvset axis,mrx,mry*-1,mrz //fvdir計算時に正負逆になるので予め逆にしとく fvdir axis,0 ,0 ,1 //オブジェクトのローカルZ座標軸に串を刺すイメージ selang my_obj //任意軸の回転させたいオブジェクト選択(objrotfvを使う準備) objrotfv axis,rz //axis軸をrz回転 //ピッチング処理 fvset axis,mrx,mry*-1,mrz fvdir axis,1.0 ,0.0 ,0.0 objrotfv axis,rx //ヨーイング処理 fvset axis,mrx,mry*-1,mrz fvdir axis,0.0 ,1.0 ,0.0 objrotfv axis,ry //自機移動処理 getang my_obj,mrx,mry,mrz //自機の角度取得 fvset fv,mrx,mry*-1,mrz fvdir fv,0,0,-0.1 //ローカルZ座標軸上を前進 my_x+fv //移動分を自機ワールド座標に加算 my_y+fv(1) my_z+fv(2) setpos my_obj,my_x,my_y,my_z //自機座標設定 //カメラ回転と座標設定 getang my_obj,mrx,mry,mrz //自機の角度取得 setang HGOBJ_CAMERA,mrx,mry,mrz //自機の角度をカメラに設定 fvset axis,mrx,mry*-1,mrz //スペースを押してる間は三人称視点 if key&16 {fvdir axis,cpos_x,cpos_y,cpos_z}else{fvset axis} //角度に合わせたカメラ位置計算 fvadd axis,my_x,my_y,my_z //カメラローカル座標に自機の座標を加算 selcpos //カメラ座標選択 objsetfv axis //カメラ座標設定 goto *main *owari end



てん

リンク

2012/9/6(Thu) 20:10:06|NO.49178

何か問題にぶつかった時は要素に分解して考えるといいですよ。

例えば一人称視点、FPSを実現しようと思ったら
・カメラの操作
・視線方向のベクトルの取得
を組み合わせればうまく行くかと思います。
(断っておきますが、私は3Dは初心者ですのであくまで「私ならこう要素化してみる」という例です。)

要素に分けて、それでもわからなければグーグルなどで検索しましょう。
要素化すればするほどヒット率は上がると思います。
それでもわからない場合のみ、質問しましょう。

要素化されればされるほど物事は具体化され、回答者も答えやすくなると思います。



さて、質問者さんは物事の要素化、大まかなあたりが付けられなくて困っているのでしょうか。
それとも、要素かはできているがある要素の実装ができなくて悩んでいるのでしょうか。

それにより回答の方向も決まるかと思います。



fall

リンク

2012/9/7(Fri) 20:26:42|NO.49203

あ、有難うございます!早速PCのほうで実行してみます



暇人

リンク

2012/9/17(Mon) 21:13:41|NO.49428

今更だけど

>p=(atan(1)/90)
これは

p=(atan(1)/45)
だった・・・
角度表示の変換にしか使ってないから動作には支障ないが・・・
rad2deg()使っとけば間違いも無かったな・・・(有るの忘れてた)



fall

リンク

2012/10/6(Sat) 06:40:20|NO.49798

すいません。諸事情により返信がだいぶ遅れました。試してみたのですが、ボックスモデルだと
普通に動くのにxファイルのモデルだと変な動きをするのですが・・・。どうしてそうなるのか
さっぱりわかりません。



暇人

リンク

2012/10/6(Sat) 13:25:34|NO.49803

回転順序が通常モデルとXモデルとでは違う(詳しくはmodelorderのヘルプ参照)

>addbox m_model,1,1
>regobj my_obj, m_model

これを

addxfile m_xmodel,dir_exe+"\\sample\\hgimg3\\font_a.x" modelorder m_xmodel,HGMODEL_ROTORDER_ZYX regobj my_obj, m_xmodel setscale my_obj,0.3,0.3,0.3
に変更



fall

リンク

2012/10/6(Sat) 18:12:44|NO.49818

分かりました!!!!早速やってみます!!



fall

リンク

2012/10/6(Sat) 18:22:24|NO.49819

うおおおおおおおおおお!解決しました!
みなさま、本当にありがとうございました!



fall

リンク

2012/10/6(Sat) 18:23:05|NO.49820

解決



ONION software Copyright 1997-2023(c) All rights reserved.