【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 【作れば?】

このエントリーをはてなブックマークに追加
952名前は開発中のものです。:04/10/09 14:48:28 ID:fnNWEyBk
>の三つ。

すまん、正しくは四つ(X Y vx vy)だな…_| ̄|○
953名前は開発中のものです。:04/10/09 15:06:45 ID:fnNWEyBk
うわぁ、また間違えてた。

X’ := X + vx*Δt
Y’ := Y + vy*Δt - 1/2*g*Δt*(Δt+2t)

t はジャンプ開始からの総フレーム数。Δt は1フレーム。
多分これでそれっぽくジャンプしてくれる。
954名前は開発中のものです。:04/10/09 19:26:09 ID:Hz7aVvDM
しまった・・・ジャンプ開始からの総時間 t 使うんだったら

X’ := X + vx*t
Y’ := Y + vy*t - (1/2)*g*t^2

 X,Y : ジャンプ開始時のキャラ座標

でいいじゃないか。何やってんだか・・・_| ̄|○
955752:04/10/09 20:10:42 ID:tGkVnHq2
うおおー みなさんありがとうございますーー
わざわざサンプルまで作ってもらっちゃって…orz
今からがんばって作ります。バイトで疲れて寝ちまってたぃ。
個別レスはまた後でします。みんなほんとうにありがとう。
956752:04/10/09 20:56:28 ID:tGkVnHq2
>>954
vxとvyは、目標地点との位置を計算して割り出せばいいのん?
>>950みたいなコトすりゃいいのかな。
うえー、わかんねー。

>>949のテーブルも面白いな。最終奥義っぽい気もするけどw
ジャンプじゃなくて、他のモーション作る時に使いそう。
ツクールでいうトコの戦闘アニメ作るときに。
957名前は開発中のものです。:04/10/09 22:02:18 ID:Hz7aVvDM
>951-954で書いたのはアクションゲーム的手法なので vx と vy は適当に設定すればいい。
RPGの演出に使うなら、テーブルの方が手っ取り早いかもしれない。
とはいえ、せっかくなので vx と vy の出し方も書いておこう。
以下ではジャンプして、同じ平面上に着地する場合を想定して書く (飛び乗ったり飛び降りたりしないってこと)。

まず決めておかなければならないのは、着地点のジャンプ開始点からの水平距離(相対座標)
それから、ジャンプしている時間。
ここでは水平距離をΔx、ジャンプしている時間を Jt としよう。
vx は 等速直線運動なので簡単に

vx := Δx / Jt

でOK。
でvyはというと、着地点までのちょうど半分のところで最高点に達する=速度v=0 になるようにすればいい。
鉛直投げ上げ運動の速度の式は重力加速度を g 、時間を t とすると

v = vy - g*t

最高点に達する時間は Jt/2 なので

0 = vy - g*(Jt/2)
よって

vy := g*(Jt/2)

となる。
958752:04/10/09 23:23:26 ID:tGkVnHq2
>>957
詳しくありあとうございます!
とりあえずその式を理解するには鉛直投げ上げ運動とやらを学ぶ必要がありそうだ。
色々調べてるけどちんぷんかんぷんだぎゃ…
vyが高さで、現在時間<JT / 2の時はマイナスで、現在時間>JT / 2がプラスで… ありゃ?
…まあ、とっかかりが出来たから、なんとかやってけそう。がんばれ俺。

本当にわざわざありがとう>みんな
俺の半分はみんなでクリエイトされてる
959名前は開発中のものです。:04/10/10 00:18:29 ID:yUP4MbDi
テーブルの値はこっちの方が自然かも。
Y := X * X から差をとって2フレームに1回動くようにしたものです。

JumpLine: array[0..42] of Integer =
(-19,0,-17,0,-15,0,-13,0,-11,0,-9,0,-7,0,-5,0,-3,0,-2,0,
-1,0,1,0,2,0,3,0,5,0,7,0,9,0,11,0,13,0,15,0,17,0,19);
960752:04/10/10 00:33:00 ID:pz2k/KeD
ちょこっとづつだけど、鉛直投げ上げがわかってきた。まだ穴あるけど。

>>959
コイツをJumpIndexで拾って、Yに足せばいいんだよね。
for文でテーブル生成するようにすれば、初期値と着地点のセットも楽そうだし。
ぶっちゃけコッチの方が簡単そうだーorz

せっかく教えてもらったんだし、ノウハウ獲得のためにもう少し鉛直投げ上げ勉強しよう。
961名前は開発中のものです。:04/10/10 01:14:28 ID:hHFLHP4A
マウスを動かして、フレーム毎のカーソル位置の変位を求めて
テーブルを作ると良いかもしれない。

962名前は開発中のものです。:04/10/10 01:38:07 ID:1bhdhpCy
>vyが高さで
ちがう。vy は初速度。
963名前は開発中のものです。:04/10/10 07:07:53 ID:UVpFOtKx
ジャンプその2
←→で左右へ移動、Zでジャンプ。
障害物で止まる動作が難しい。
http://gamdev.org/up/img/1519.lzh
964752:04/10/10 14:37:13 ID:4+SGGvxt
>>961
ツクールで戦闘アニメ作るとき、それと同じだね。
カーソル位置じゃなくてグラフィックの位置だけど。
簡単に作れるけど、決まった動きしか出来ないのが難点。

>>962
ゴメンナサイ… 今教科書とか講座サイト見て必死にがんばってます。
難しいけど少しずつ公式とか当てはめて理解しようとしとるます。

>>963
テーブル式だとアクション系は難しいのね…

>>957を参考にして、Y軸変化に初期位置と着地地点の差分を時間で割ったのを足してみた。
とりあえず同じ平面上に着地しなくても止まるようになった。
多少のズレはあるけんど。
もう少し初速度の求め方と時間の求め方を勉強しないといかんデス。。。

次スレは990あたりでいいよね
965752:04/10/10 14:48:02 ID:4+SGGvxt
ttp://gamdev.org/up/img/1521.zip
ちょっと使いづらいけどサンプル。
計算式がアレだけど…。
こんな感じでいいのかな
966名前は開発中のものです。:04/10/10 21:34:24 ID:PgjcYzS2
初期座標を(0,0) 重力加速度 g を約10として
横方向に100pixel の距離を 10フレームかけて移動するジャンプを考える。
初速度は>957に書いてある式から

vx = 100 / 10 = 10
vy = 10*(10/2) = 50

これを>954の式に当てはめると、ジャンプ開始から t フレーム後の座標(X’ Y’)は

X’ := 0 + 10*t
Y’ := 0 + 50*t - (1/2)*10*t^2

これを t を変えて手計算してみるとそれっぽい軌道になっているはず。
着地する場合は、着地点の Y 座標と Y’ が一致(またはY’がYよりめり込んだ位置)に
なったときに計算を止める。そうしないとどこまでも落ちていく。

着地点の X 座標は最初の計算で指定したもの(上の例なら100)より、
飛び乗りなら手前に、飛び降りなら先になる。
967名前は開発中のものです。:04/10/11 00:02:23 ID:fsbVdVBJ
ちょっとマシになった。
http://gamdev.org/up/img/1523.lzh

ところで、全画面をForm.Canvasへ描画していたら、
17ms/フレームは維持できないと思うのですけど、
DirectXなら可能なのですか?
968名前は開発中のものです。:04/10/11 00:11:15 ID:CvEZEgow
http://gamdev.org/up/img/1524.lzh
修正したユニットを上げた。
細かい修正はいるけど。
969名前は開発中のものです。:04/10/11 00:18:23 ID:CvEZEgow
おっと>968は>752宛ね
970752:04/10/11 08:58:23 ID:1NvYAQdE
もぅ何がなんだか○| ̄|_

>>966 >>968
毎度毎度、ありがたいです。
かなり解りやすく書いてくれてるんだろうケド、まだイマイチわからん…

頭痛くなってきた。ていうか小学生からやり直したほうがいいかも('A`)
971名前は開発中のものです。:04/10/11 13:17:05 ID:SwVJig7g
質問があるんですけど、QuadrupleDでフェードインやアウトなどは、どのように書けばなりますか?
972名前は開発中のものです。:04/10/11 14:09:14 ID:USPodX2R
>>971
もし自分がその質問を受けたら、あなたは答えられますか?
投稿する前に、自分の書いた文章を2、3回読みなおすことをお勧めします。
973名前は開発中のものです。:04/10/11 16:55:13 ID:1Ev5Eo1c
QuadrupleDに限らず、現在の画像と次に表示したい画像を、徐々に比率を変えながら混ぜて表示すればいい。
974名前は開発中のものです。:04/10/11 23:13:43 ID:nYzWYvTG
>>971
ようは徐々に現れるようにすればいいと思う。アウトはその逆。
975967:04/10/12 05:23:51 ID:i5/KZM7k
320x240ならDirectX不使用で全画面更新しても17ms/flame出た。

スーパーマリオブラザーズの動作って・・
http://pc5.2ch.net/test/read.cgi/gamedev/1017730241/l50
はレベルが高かったよ。
976名前は開発中のものです。:04/10/12 06:22:42 ID:VVe4LcK/
LoopLandの方は浮動小数点を使って少しずつ動かし、
矩形が障害物と重なると止まるようになってるみたい。
977名前は開発中のものです。:04/10/12 09:39:22 ID:SZeo6LzP
整数型で画面幅を640×100で処理、
その値を100で割った値に描画としています。
未だに浮動小数点を使うのは邪道な気がして…
978名前は開発中のものです。:04/10/12 23:12:22 ID:M/jzHol3
0.3移動する場合、小数点以下切り捨てだと、
0.3 + 0.3 + 0.3 + 0.3 = 1.2 で、4フレームで1ピクセル移動する
しかし、次は 1.2 + 0.3 + 0.3 + 0.3 = 1.1 で、3フレームで移動する。
この変は気にならないのか、それとも何か手があるのか。
979名前は開発中のものです。:04/10/13 11:27:48 ID:T4B/tejA
Clootieアップデートキタ━━━━━━(゚∀゚)━━━━━━ !!
http://clootie.narod.ru/delphi/download_dx92.html

DirectX 9.0 Software Development Kit Update (October 2004) 対応
980名前は開発中のものです。:04/10/13 11:33:52 ID:YT0IdkLG
これってdelphiXみたいなものですか?
981名前は開発中のものです。:04/10/13 11:52:09 ID:T4B/tejA
>>980
ClootieはDirectX APIやライブラリを使えるようにしたものです。
DelphiでAPIを使うにはヘッダが必要なのですがDirectXのヘッダと
定数などの定義やD3DXライブラリなどの移植も含めたパッケージです。
(win32APIのヘッダはDelphiにはじめから入ってます)

簡単にいうとDirectX SDKの移植ですね。

DelphiではDelphiXやQuadrupleD、C++はLunaやDXライブラリが有名だけどこれらは
DirectX APIを使いやすいようにしたラッパーライブラリといわれるものです。
982名前は開発中のものです。:04/10/13 23:31:28 ID:waCVicYv
煽るわけではないのだが、
DelphiでDirextXを使う意義とは…教えてくれよっ!
983名前は開発中のものです。:04/10/13 23:45:04 ID:UZTFJjU0
俺はそのままDirctXを使えると思って
Delphi買ったのだが・・・
984名前は開発中のものです。:04/10/14 02:19:35 ID:M6WmpyCb
DirectXなら垂直同期をとってちらつきを無くす事が出来るらしい。
あと、リセット無しで解像度と色深度を変えられる。
985名前は開発中のものです。:04/10/14 04:21:51 ID:uN5lNxMN
ジャンプだけど、
最高でどれだけの高さまでジャンプしたいか、
着地するまでにどれだけの距離を飛びたいか、
を考えてから、式やテーブルを考えないと駄目みたい。

320x240だと横方向へは1ピクセル/フレームで動かせばいいのかな。
2ピクセル/フレームだと速すぎるし。
986名前は開発中のものです。:04/10/14 08:20:34 ID:4GXDeVoz
スーパーマリオ風横スクロールアクションを作れ
http://gamdev.org/w/?%5B%5B%A5%B9%A1%BC%A5%D1%A1%BC%A5%DE%A5%EA%A5%AA%C9%F7%B2%A3%A5%B9%A5%AF%A5%ED%A1%BC%A5%EB%A5%A2%A5%AF%A5%B7%A5%E7%A5%F3%A4%F2%BA%EE%A4%EC%5D%5D

Delphiでジャンプしてるのがあったよ
QD3使ってるけど
987名前は開発中のものです。:04/10/14 11:28:04 ID:4FGx+6AV
>>982
コンポが使える。DirectX使うツール作りに大変便利。
988名前は開発中のものです。:04/10/14 12:42:29 ID:AXAJtJaz
次スレいらねえな
989名前は開発中のものです。:04/10/15 05:19:21 ID:02K1A8w4
>>986
情報ありがとうございます。
ソース読みましたが、
すべてのマップチップに対してキャラクタが重なるかどうかを調べ、
重なるなら進行方向とは逆の方向へずらしていますね。
これなら簡単なので自分のにも組み込んでみます。
ちなみに私のは悪魔城ドラキュラっぽいです。

http://gamdev.org/up/img/1555.png
990989:04/10/15 06:26:11 ID:wcOjDqKn
あー、これは斜め下へ移動して横のブロックに衝突する場合、
横方向のみピタリとずらしていて、縦方向にはずらしていないんですね。

私は縦へもずらしていました。
見た目は変わらないし、細かい事を気にしない方が良さそう。
991名前は開発中のものです。:04/10/15 06:31:27 ID:wcOjDqKn
しかも、今重なっていて、次の瞬間も重なる場合にブロックの外へずらしている。
だから、見た目では多少重なるんですよね。

私のやり方は、今重なっておらず、次の瞬間に重なる場合は
ブロックの隣へピタリと止める方法でした。
992名前は開発中のものです。:04/10/15 18:23:01 ID:q0RdRnIe
次スレどーする?
http://pc5.2ch.net/test/read.cgi/gamedev/1027482533/
ココ再利用する?新しく立てる? 立てるなら俺立ててみる
993名前は開発中のものです。:04/10/15 19:26:44 ID:fdLGToPb
埋め
994名前は開発中のものです。:04/10/15 19:27:06 ID:d+Xe13FX
埋め
995名前は開発中のものです。:04/10/15 19:27:21 ID:fdLGToPb
埋め
996名前は開発中のものです。:04/10/15 19:27:36 ID:d+Xe13FX
埋め
997名前は開発中のものです。:04/10/15 19:27:50 ID:fdLGToPb
埋め
998名前は開発中のものです。:04/10/15 19:28:05 ID:d+Xe13FX
埋め
999名前は開発中のものです。:04/10/15 19:28:18 ID:fdLGToPb
埋め
1000名前は開発中のものです。:04/10/15 19:28:32 ID:d+Xe13FX
埋め
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。