Javaゲーム制作記

いろいろ作ってます  

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | Comment(-)

ゲームの館、更新しました

「Battle Defence!」 を更新しました!
Full Powerモードが追加されました。
スパーク!

画像をクリックでゲームをプレイできます! P.S. リンク切れです…

Full Powerモードは、右上のゲージが最大までたまると発動できます。
ピンチ逆転!
スポンサーサイト
[ 2009/07/24 10:07 ] ゲーム制作 | Comment(0)

物理エンジンデモ公開

物理エンジンがそこそこできてきたのでデモプログラムを公開します!
箱を積み上げるデモです。
左クリックと右クリックで箱をショットします。
※出しすぎると重くなります。






めっちゃはみ出てますが気にしないでください。

また進んだら何か載せます。
ではまた。
[ 2009/07/21 10:26 ] 物理演算 | Comment(2)

1000Get

ゲームの館のアクセス数、1000を踏んでしまいました。
O|⌒|_<<こ、腰が・・・



ところで、Googleに登録しているのにまだ検索ではHITしない模様。
うーむ・・・
[ 2009/07/10 18:17 ] 未分類 | Comment(4)

ゲームの館更新

久々にゲームの館を更新しました!
いろいろと機能が追加されました。

いわゆる防衛ゲームです。
こちらからどぞ。P.S. リンク切れです...
[ 2009/07/09 15:31 ] ゲーム制作 | Comment(0)

剛体シミュレーション手法

※説明には間違いがあるかもしれません。くれぐれも自己責任でお願いします。
もし見つけたら報告してくださるとうれしいです。


P.S.間違いだらけでした。とりあえず修正しておきました


今日は、2Dの剛体シミュレーションについて書きます。
剛体とは、
形の変形が全く無い物体です。
要するに、
「とてつもなく(無限に)硬い」
と理解していてOKです。


剛体シミュレーションにも拘束ベースやペナルティー法などいろんな手法がありますが、
今回説明するのは、ペナルティー法です。
ペナルティー法とは、剛体間にめり込みが発生したときに、めり込み量に応じて力を与えるという手法です。
(めり込んだら押し戻そう方針)


剛体シミュレーションにおいて、一番重要なのは、
「どう衝突を検出するか」
と、
「どう衝突応答をするか」
の二つです。
これが決まれば(そして正確に計算すれば)、後は物理法則に応じて結果が得られます。
運動について考えてみましょう。
運動には、次のような法則があります(運動の法則)。

1、外部から力が加わらない限り、物体は静止(運動)し続ける。
2、物体の加速度は、加わった力に比例する。その向きは、加えられた力と同じである。
3、力が加わったとき、作用・反作用の力が発生する。反作用の力は、
作用する力と同じ大きさ、なおかつ、正反対である。

だったと思います(うろ覚え)。

では、まず必要な剛体の変数について書いておきます。
・質量
・重心
・速度
・角速度
・回転角(3Dではクォータニオン)
・慣性モーメント
これだけあれば、多分大丈夫です。
このうち、質量と慣性モーメントは定数(変化しない)です。

慣性モーメントを求めてみましょう。
慣性モーメントは、重心との距離の二乗に質点の質量を足したものになります。
形状が分かっていれば、公式で求めることができます。
この辺はググるとたくさん見つかります。
例:長方形=質量×(幅^2+高さ^2)÷12

質量を求めてみましょう。
質量は、各質点の質量の合計で表せます。
つまり、
M=Σp.m
pは質点を表しています。
通常は密度×面積(体積)で求めます。

そして衝突応答です。
ここでは、衝突検出については書きません。
ペナルティ法では、めり込み距離とバネ・ダンパ係数から
剛体にかかる力Fを求めます(詳しくは調べてください;;)。
注:摩擦についてはややこしくなるので考えません。
運動量(v)と角運動量(ω)の増加については、それぞれ次の式で表せます。
v+=F/M
ω+=F×cp/I
※ Mは質量、Iは慣性完成モーメント、×はベクトルの外積を表し(z値を取ってください)、
  cpは衝突点の相対位置を表します。

では、実行結果を載せます。
左クリック:四角形
右クリック:五角形
中クリック:壁


P.S. 慣性モーメントの計算方法を間違えてました。異常に回りにくいです

今回はいい加減な計算で求めていたのでいい加減な結果になりましたが、
きちんと計算すればそれなりの結果になります。
がんばってください!
[ 2009/07/06 19:36 ] 物理演算 | Comment(2)

1000突破!!

訪問者が1000人を突破しました!

スタートは切れた感じです。
これからもがんばります!
[ 2009/07/05 18:22 ] 未分類 | Comment(2)
プロフィール

Author:saharan

Twitter
検索フォーム


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。