トップページgamedev
1001コメント354KB

DXライブラリ 総合スレッド その16

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2013/06/30(日) 23:57:05.06ID:j62MvD3e
Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

【公式】
http://homepage2.nifty.com/natupaji/DxLib/

【関連スレ】
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
ゲームプログラムなら俺に聞け(プログラム技術板)
http://toro.2ch.net/test/read.cgi/tech/1366526476/

●DXライブラリではなくDirectXの質問ならこっちへ
【C++】DirectX初心者質問スレ【C】(プログラム技術板)
http://toro.2ch.net/test/read.cgi/tech/1370015791/
0022名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:o07ozPmm
>>21
もちろん知ってます
配列の添え字を動かしてるんですよね?
ただ、そこの値の変化が見えません
0023名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:o07ozPmm
多分算数が弱いんです、(count/2)%10-1←これは値が
0、1,2,3、、、と変化するんですよね?
−1は0からの添え字に合わすために引いてる。
そういうのはわかるんですよ。
でも、それではものすごいスピードなのは自分が書いたものと
変わりがないような気がするんで、、、、
値の変化をもう少し解説して頂けませんか?
0024名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:o07ozPmm
>>21
あ、人を違えました、すみません。
(でも言いたいことは同じなんですけど、、)
値の動きがわかりません。

if ( frame_count %= 2 ) {
i++;
i %= 画像枚数;
}

if文の中は、「countを2で割って、余りが2になる場合」でよろしいですよね?
で、そのたびに、iをインクリメントする。
そのiを画像枚数で割って、その余りをiに加える??
意図、値の変化、が見えません。。。
0025名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:6PcLzQCR
単純に均等割りで頭に戻るループなら
(count / コマウェイト) % アニメ枚数
だけでいいんじゃね
0026名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:Jwek2QMZ
( this->count / a ) % 5

aは1以上の整数

でいいんじゃないのかな。配列はお好きに。
0027名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:Jwek2QMZ
ああ25さんがすでに言ってた。
0028名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:Y41MaDA7
もうちょっと真面目にやるとステップの進行に使う係数(/2の部分)を、実際のフレーム当たりの実経過時間から計算するよな
0029名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:6pY90Lwl
それ最近流行ってるってだけで別に「真面目に」とかつけなくていいからね
0030名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:Y41MaDA7
最近流行ってるって何が
0031名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:VRSiUV+Z
固定か可変かの違いでしか無くない?
0032名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:Jwek2QMZ
ゲーム自体が可変(である事が普通)だから〜って事だろうか。
0033名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:TvHXVORu
>>17
では、こういうのを提案します。
-------------------------------
int i = 0;
int a = 0;

// Img.pngを6分割で読み込む
LoadDivGraph("img\\Img.png", 6 , 2 , 3 , 100 , 100 , Img);

while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){

  // 画像表示
  DrawGraph( 100 , 120 , Img[a] , TRUE );

  // アニメーションプログラム
  if (i<60){;}
  else if(i<62){a=1;}
  else if(i<64){a=2;}
  else if(i<66){a=3;}
  else if(i<68){a=4;}
  else if(i<70){a=5;}
  else if(i==70){i=0 , a=0;}

  i++;
}
0034名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:TvHXVORu
この案は、画像1〜5の内容を1つのPNG形式のファイルに収めて
それを配列で表示させることが大前提なのですが、

  // アニメーションプログラム
  if (i<60){;}
  else if(i<62){a=1;}
  else if(i<64){a=2;}
  else if(i<66){a=3;}
  else if(i<68){a=4;}
  else if(i<70){a=5;}
  else if(i==70){i=0 , a=0;}

アニメーションさせる速度は、この部分で調整しています。
i変数が60以下の時は何もしない
最初は配列の0を指定し、1つ目の配列には何も描かないでおく
そしてi変数が60〜61(2フレーム)までの間
a変数に1を代入し続け2フレーム間、2つ目の配列画像を表示し続ける
つまり、このプログラムは2フレーム間隔でアニメーションし続けることになります。
0035名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:TvHXVORu
  // アニメーションプログラム
  if (i<60){;}
  else if(i<70){a=1;}
  else if(i<80){a=2;}
  else if(i<90){a=3;}
  else if(i<100){a=4;}
  else if(i<110){a=5;}
  else if(i==110){i=0 , a=0;}

つまり、例えば、このようにすれば10フレーム間隔のアニメーションになります
アニメーション速度の調節は
どこで制御しているのか、大体、想像つくでしょうか?

  // アニメーションプログラム
  if (i<60){;}
  else if(i<160){a=1;}
  else if(i<260){a=2;}
  else if(i<360){a=3;}
  else if(i<460){a=4;}
  else if(i<560){a=5;}
  else if(i==560){i=0 , a=0;}

こうすれば100フレーム間隔の遅いアニメーションになります
0036名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:TvHXVORu
ああ、Img変数の宣言をしておくことをお忘れなく
----------------------------
int Img; // Img変数の宣言
int i = 0;
int a = 0;

// Img.pngを6分割で読み込む
LoadDivGraph("img\\Img.png", 6 , 2 , 3 , 100 , 100 , Img);

while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){

  // 画像表示
  DrawGraph( 100 , 120 , Img[a] , TRUE );

  // アニメーションプログラム
  if (i<60){;}
  else if(i<62){a=1;}
  else if(i<64){a=2;}
  else if(i<66){a=3;}
  else if(i<68){a=4;}
  else if(i<70){a=5;}
  else if(i==70){i=0 , a=0;}

  i++;
}
0037名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:AeXNZZqZ
1回分の画像表示ごとにScreenFlipの前後にカウント挟めばいいだけでは?
カウント5になったら表示させるようにすれば
単純に5倍の表示時間増大になるはず

初期値にi=0;してから
if(i==0){ //iは適当
表示ルーチン
}
ScreenFlip();
i++;
if(i>5)i=0;
0038名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:6iFG2U1A
まーたJet++じゃないだろうな
0039名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:K/eQcKgB
かずきくんには触れないでおいて
0040名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:6iFG2U1A
>>37これがシンプルでいいかなとは思ったけど
これって1種類の画像表示ごとに表画面に反映させるの?
それじゃ裏画面に描画してる意味合いが薄れないだろうか
的外れならスマン
0041名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:1xgoa0KH
if( Time % IntervalTime == IntervalTime - 1 ){
  ImageFlame++;
  if( ImageFlame >= MAX_FLAME ){
     ImageFlame = 0;

  }
}
0042名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:1xgoa0KH
ミスって途中で書き込みしてしまったすまん。

if( Time % IntervalTime == IntervalTime - 1 ){
  ImageFlame++;
  if( ImageFlame >= MAX_FLAME ){
     ImageFlame = 0;
  }
}
Image[ImageFlame].draw();
Time++;
0043名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:AeXNZZqZ
>>17で1枚ごとの表示時間を長くしたいってあったから
37のように書いてみただけなので、
それより効率の(もしくは目的に合った)いいソースがあれば
それを使ってもらえればいいです
(ScreenFlipならマイクロ秒じゃなく約60分の1秒単位での表示処理なので
見た目的にも効果があると判断しました)
0044名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:IzFaHD6I
ちょっと複雑なパターンにするなら

 ・画像ハンドル
 ・画像を表示する時間
 ・次のパターンへのポインタ(NULLなら停止なり消去なり)

をクラス/構造体に突っ込んでおいて、
条件ごとに起点となるパターンを呼び出す……とかどうかな?

まあ、最終的には外部ファイル最強なんだろうけども。
0045名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:vfXXCUJm
スクリプト言語最強!!
0046名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:+/CoJmSY
スクリプト言語を動かすためのインターフェースなり土台なり作ろうとすれば
これと同じような(下手するともっと複雑な)ものを作る必要がある件
0047名前は開発中のものです。2013/07/10(水) NY:AN:NY.ANID:hFi49aB+
相対パスから絶対パス取得したいんですけどどなたか分かる方いませんか?
0048名前は開発中のものです。2013/07/10(水) NY:AN:NY.ANID:qhalMkf2
>>47
OSから渡される起動時引数からカレントディレクトリ取得してそこから相対とか、
そういう基礎的な話か
0049名前は開発中のものです。2013/07/10(水) NY:AN:NY.ANID:hFi49aB+
>>48
すみません、strcatの存在すっかり忘れてました…
ありがとうございます
0050名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:hTzpp10w
おい…誰だよノベルゲーは簡単とか言ったやつは…
商用エロゲ作ってるが、3ヶ月毎日フルタイムでコーディングしても、まだ終わりが見えないんだが…
0051名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:nVvWJgzk
誰が言ったそんなんw
0052名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:1boaEOr8
DXライブラリでノベルゲエンジン作ってるのか。奇特な事でw
フリーの使えばいいのに。
0053名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:zRBu2bed
3ヶ月フルタイムで終わりが見えないとかどう考えても頭悪いだけだろ
そもそもNScripterとか吉里吉里使わない時点で頭悪い
0054名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:hTzpp10w
奇特なことやってるのは分かってるが、いくつもミニゲーム組み込んだりしてると
DXライブラリ使って作ったほうがやりやすいんだよ…
吉里吉里のライブラリ流用してるし、このやり方が悪いとは思わんのだがな…
0055名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:p2DfNmFs
その書き込みこそ頭悪そう。
商業ならフリー使わない理由はいろいろあるだろう。
0056名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:p2DfNmFs
54じゃなくて53宛ね
0057名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:TWfYB7Vz
作ったことがない奴はノベルゲーと馬鹿にするが
0から自分で作ると結構難しいぞ
ミニゲームもあるならなおさらキリキリとか使えないし
0058名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:yD2puQqu
単純に画像表示してテキスト表示して、
選択肢によって場面移動、それを繰り返す、ってだけなら
飯食いながらサンプルとして書ける程度の内容だけど、
もしも難しいと言ってる奴が、暗黙の内に独自の内蔵スクリプトとそのインタプリタ含めた汎用ゲームエンジンみたいな物前提で話してたら、
確かに大変かも試練
0059名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:zRBu2bed
・ノベルゲー作るの大変すぎ
・ノベルゲー+その他ゲーム集作るの大変すぎ

この二つじゃまったく話が違ってくるだろ
0060572013/07/13(土) NY:AN:NY.ANID:TWfYB7Vz
少なくとも
(1) 汎用パーサーを利用して俺スクリプトの解析
(2) アニメーション システム
(3) シーン(レベル)の保存とロード
(4) 統一されたキー入力を伝達する仕組み
(5) 装飾をつけたテキストの表示
(6) データの暗号化と永続的なファイルへの保存
(7) デバッグの為の変数表示機能
(8) コリジョンの検出および距離の計算
(9) 物理エンジンとの連携

いくらでもあるわ。経験者でないなら三ヶ月でできる量ではない
0061名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:wd3Q/jHw
だれもそこは否定してないのになんでそんなに必死なの?
53 もスクリプトツール使えって言ってるだけで
否定してるわけじゃないでしょうに。
0062名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:LUqGCTWw
作った事も無い人間が知ったかぶったあげくに他人を頭悪い呼ばわりしてればそりゃバカにされるよ。
0063名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:wd3Q/jHw
馬鹿にしてるヤツも居ないようだが。
0064名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:Wh+py0kB
文字列だけのローグライクもなかなか難しいんだぜ
0065名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:yD2puQqu
>>60
ノベルゲーを作る場合の話じゃなくなってる気がするが
0066名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:ywADsX8N
ホントお前らって下を見つけて叩く事しかできないんだな
技術的な事言ってる訳じゃないし、がんばれとかチラシの裏にでも書いてろで終わる話じゃん
0067名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:H9N77kIs
プログラムやってるやつってすぐ「頭悪い」って言ってくる印象あるけどなw
0068名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:yD2puQqu
会話上でも仕掛け上でも、そこに問題があった時整理や切り分けして話を絞っていく、
みたいな頭の働かせ方するのが慣れたプログラマの本能だったりするけど、
その辺で意志疎通出来にくい相手とか見ると、思わず頭悪いなぁとか言っちゃう人いるかも試練
0069名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:KqbQiyOs
パソコンを使いこなすことに優越感を感じやすいタイプの人間が
IT業界にやってくるわけだからな
使いこなせない奴を見て嬉しくなるタイプの人間しかいないよ
0070名前は開発中のものです。2013/07/13(土) NY:AN:NY.ANID:LilF81Tl
いいから吉里吉里使えよ
0071名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:+UK5RTjg
説明しにくいんですが、継承クラス作るときの書き方みたいに
クラスの宣言内のコンストラクタに
クラス名(int,int):クラス内のメンバ変数名(引数),クラス内のメンバ変数名(引数)
みたいに書いてるのをたまに見かけます。
トレースしたいんだけど、コンストラクタに:をつけて変数ならべるのは
どういう意味ですか?
0072名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:/QtoVkR/
メンバ変数の初期化
ああいう記法なのはまったく理解できんけどな
0073名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:+UK5RTjg
、、初期化ですか?
クラスのコンストラクタの定義の中で済ませば良いのに、、
コンストラクタの宣言の横で初期化してるってことですか?
処理はまったく同じですよね?

本人の好みの問題なだけですかね?
0074名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:83nWya90
const ついてるメンバ変数だとその記法でしか初期化できなかったような
あと基底クラスの引数付コンストラクタ呼ぶときとか
0075名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:JsjE2TLy
参照変数(&)もそうかな
0076名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:tBW3km87
デフォルトコンストラクタ持ってないクラスがメンバな時とか初期化構文でないと駄目な場合は割とある
あとふつうの変数でも代入と初期化は本来別物だから
処理が全く同じになるかというとコンパイラ次第なんじゃないか
0077名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:+UK5RTjg
そのコンストラクタの横に羅列したメンバ変数にはconstはついて無いです。

気になるのは、そこに羅列したメンバ変数には
メンバ関数のごとく引数がついてるってこと。
まあその引数の値で初期化されると想像出来ますが、、
なぜ、わざわざそんなやり方を??

単刀直入に言いますと
コンストラクタ(int x,int y):変数A(y),変数B(x){}

コンストラクタ(int x,int y){変数A=y;変数B=x;}
の違いってなんですか?
ということです。

ちなみに、前者のソースみたく書いてるは
プロフェッショナルな方なんですよ。
0078名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:83nWya90
それは作者の好みじゃね・・・
0079名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:XaubjkQU
初期化リストだっけ?
俺は何気なくだけど前者使ってるわ
大体0とかで初期化するだけだけど
0080名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:+UK5RTjg
やっぱただの好み、というか作者の癖、なんですかね
べつにそれならそれでいいんです。

自分には聞いたことも見たことも無い書き方
だったんで戸惑いました。
0081名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:+UK5RTjg
レス下さった皆さま
ありがとうございました。
0082名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:/QtoVkR/
ちょっとその変な書き方のほうが高速とかいう噂を聞いたことがあるな
本当かはしらない
0083名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:tBW3km87
>>77
前者は初期化で後者は代入
わざわざそんなやり方、というよりも前者の方がC++本来のクラス変数の初期化の文法
後者でも単純な変数なら同じ結果が得られるだけ
0084名前は開発中のものです。2013/07/14(日) NY:AN:NY.ANID:5JkpjM3e
>>77
前者は初期化だけど、後者はどう見てもコピーで別物に見えるけど
0085名前は開発中のものです。2013/07/15(月) NY:AN:NY.ANID:Un3rMRLz
参照をメンバに持つ場合とか
初期化リストでないと代入できないんじゃなかったっけ
0086名前は開発中のものです。2013/07/15(月) NY:AN:NY.ANID:ikbmv1v3
>>85
そらそうだ
0087名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:416SfEwn
前者は初期化
Var x=n;と同じ
後者は代入
Var x;
x=n;
tと同じ

Varが参照だったりconstだったり引数なしコンストラクタを持っていない場合は前者を使わざる負えない
あと、例えばstd::stringなんかだと引数なしコンストラクタの場合適当に15ぐらいの領域を勝手に確保するって噂を聞いたことがあるから
初期化のほうが適当じゃない分いい
0088名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:DavWjYNX
”使わざるを得ない”な。
0089名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:ayl4cQjp
JavaとかC#しか基本的に知らず、C++をぼやっとしか知らない人だと混同するよな
初期化リストにしろ、代入(コピー)にしろ、それらとコピーコンストラクタやオペレータオーバロードの関係とか
0090名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:Hqm1WmEM
マリオみたいなゲーム作ってるんですが
ファイアーボールみたいな動きする計算が出来ません。
参考になるような解説されたサイトやブログもまったくないです。

やはり、物理演算も入ってるでしょうし
その辺のプログラマには再現出来ない難しい軌道なのでしょうか?
それとも簡単すぎて、誰も解説をしていない状態なのでしょうか?
0091名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:7blhp/X0
慣性と重力と地面とのバウンドだけでファイアーボールになるよ
0092名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:ayl4cQjp
>>90
その辺のプログラマって括りがおかしいが、
まず先にテストで、画面の任意の位置をクリックしたら玉が現れて、下に向かって落ちていき、
一番下についたら跳ね返る、その移動量が段々減衰していくってだけのテストプログラム作ってみ
数学的にも大した計算いらない。

てかこれ、DXライブラリって言うより単純なアルゴリズムの話。
うちの新卒一年目でも昼休みにさらっと書くレベルの話。
0093名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:GmMQZD9J
数学っていうか。算数でできるレベル
0094名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:+XM2aF/e
プログラミングには直接役に立たないけど高校物理やり直したほうがいいと思う
0095名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:Hqm1WmEM
>>92
いや、実はまさにそれくらいを再現するプログラムは見よう見まねで作ったんですが
たったそれだけの動きを再現するのにえらい長いプログラムになってまして、、
上手い人はもっと短いのだろうと。参考にしたいな、と。なのにどこにも無い、と。
そういう流れす。

さらっと書くレベルの話、とは言えませんね、これは。
、、、たとえば、あなたなら何行使いますか?(常識的なインデントで)
0096名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:+XM2aF/e
やった処理と行数を要約して伝えようよ
曖昧にする意味がわからん
0097名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:kK2L2xoh
>>92がわかりやすく書いてるのにソースがないとわからないって奴は全部コピペで作るつもりか
なんとかしてソース引き出そうとしてるし浅ましい
0098名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:7blhp/X0
慣性に1〜2行 重力に1行 当たり判定に5〜7行くらい?がんばれよ
0099名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:nroTpBI+
10行とか嘘こけよ
0100名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:ayl4cQjp
>>95
> さらっと書くレベルの話、とは言えませんね、これは。

なんでわからなくて質問してるお前の基準で「違いますね、これは」とか言えちゃうのよ。
いやさらっと書くレベルの話だよ
0101名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:hzTbXOyu
大学生がやってるのか小学生がやってるのかで使うべき言葉も変わってくるよね
年齢書いとくと知ってるであろう知識で教えられるとかあるかもしれんな
DXライブラリは利用者の幅が広いからなあ
0102名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:QAiAMGmg
ぶっちゃけ、元祖スーパーマリオは足し算と引き算ぐらいしか使ってないし、わりとどうでもいいし、それで誰も文句言ったりしない。

たぶんね!
0103名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:1hVtm7c/
ファミコンで物理演算とか、ないだろ……。
いや無理とは言わんが、スーマリ程度のゲームでそんなのやらんだろ。
0104名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:+XM2aF/e
位置を表すのに速度と加速度の考え方が用いられていて
あとはめり込み判定ができてれば、2Dゲームとしては物理シミュと呼べる
プリミティブな要件を満たすと思うけど?
というか「物理演算」という言葉のスコープが大きすぎ。2D力学か運動表現と言おう
0105名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:27OHMvBc
x += vx; // 等加速
y += vy; vy += gravity; // 重力加速
物理っちゃ物理
0106名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:8KAYlLb2
・算数がわからない
・ググれない
・質問してるのに上から目線
例の小学6年生だろうからもうスルーしとけ
0107名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:K551o1n+
35歳の小6か!!
0108名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:Hqm1WmEM
>>102
え、それほんとですか?
てきとーに言ってるのなら
明らかに当時のプログラマへの侮辱ですよ?
ファイヤーボールは明らかに地面で跳ねながら飛んでいきます。
いわば、トランポリン状態です。
あれを物理演算使わないであそこまで違和感なしに出来ますか?
出来もしないのに言うな

>>105
そういうことですよね?
やっぱそれらを使ってますよね?
あのファイヤーボールは
0109名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:oQmF0F+y
105は、102の言うところの加減算のみで表現した例に見えるのだが…
0110名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:UEWWNyYt
ハルクのような超無敵主人公のアクション3Dゲームを開発するとします
主人公ハルクが高いところから飛び降りた時に
高さに応じて落下速度を上げる物体落下のプログラミングを
DXライブラリを使って構築する場合
何を重点に式を組めばいいでしょうか?
重力計算の問題です

1.落下時間に応じて速度を増していく
2.地面までの距離(y軸)に応じて速度を増していく
3.物体の重さに応じて速度を増す

あと、落下速度に応じて地面に着地した時に
地面がひび割れたり揺らしたりもしてみたい
0111名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:cTJjZDRJ
オイラー法
0112名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:mLye0j0h
古いマリオのゲームなんてスーパーマリオランドしか知らんが
あの場合は演算も糞も無く等速でx方向に進んで上下に振動するだけだったけどなあ

そんなもんでも良かったら物理の知識も要らないんじゃないの
0113名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:y2xAflWs
言っておくがお前らが思ってるよりスーパーマリオを作るのは難しいぞw
0114名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:d5+33Qmv
実際のマリオのプログラムでは演算なんかしてなくて
テーブルで変化量を持ってるだけだと思う
最近の3DSのマリオとかだったらdoubleの計算とか三角関数やベクトル辺りもガンガン使ってるだろうけど
01151102013/07/16(火) NY:AN:NY.ANID:UEWWNyYt
質問してから気付いたのですが
重力計算には空気抵抗とかも必要だと思う
y軸に面する面積が広ければ広いほど落下速度が減速する
面積が狭いと落下速度が加速

スカイダイビングをイメージすれば
両手両足を広げれば落下速度が減速
両手両足を閉じれば落下速度が加速
さらに体を斜めに傾けると、さらに落下速度が加速する
0116名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:UEWWNyYt
>>92
それは正しい物理計算とは言わない
玉が地面に面する体積と重力と風力と重さで
落下速度や上昇速度や上昇距離を計算していないと思う

落下物を別の大きさの玉に変えたり
別の形状の物体に変えても同じバウンドの実行結果になってしまう
そんなものなら数学的な計算を使わないのは当然
0117名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:Hqm1WmEM
>>113の言う通りなんですよ。

>>112>>114
>上下に振動するだけ
>テーブルで変化量を持ってるだけだと思う

そこまで単純じゃないんですよ
忘れてるんでしょうから、目で確認してみてくださいよ
http://www.youtube.com/watch?v=2QfkfFyURf8#t=0m24s
0118名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:xomIDF4E
あら、減衰とかなかったか
なら凄く単純な話じゃないか?入射角とか求める必要すらないんじゃないの?
なんか常に一定っぽいんだが
0119名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:d5+33Qmv
テーブルでやってるから計算で再現しようとすると難しいんだと思うな
0120名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:QAiAMGmg
ああ・・・これはw一応貼っとく

     ∧_∧
ガラガラ(  ^^  ) <これからも僕を応援して下さいね(^^
  =〔~∪ ̄ ̄〕
  = □――◇                       Kazuki
0121名前は開発中のものです。2013/07/16(火) NY:AN:NY.ANID:A+V7NwsU
スーパーマリオもどきはJAVAの実装がソース付きでなかったけ?
■ このスレッドは過去ログ倉庫に格納されています