トピック

弓矢の軌道計算

テラリアみたいなゲーム作ろうと思ってます^^;pockyさん(だっけ?)のあのゲームに弓矢実装した感じを想像してくれたらいいです。 どう計算すればいいのかな? 使うつもりの数値:引き具合1〜10、打ち出す時の角度
2そうだね
プレイ済み
返信[1]
親投稿
イスターリャ arduinotexter
大きさと角度の情報を持つ線分をベクトルと呼ぶ。 ベクトルはX方向とY方向に分離して考えることができる。これを成分表示と呼ぶ。 X成分=引き具合*COS(角度) Y成分=引き具合*SIN(角度) あとは、Y成分を重力に合わせて加算(減算)すればokです。
2そうだね
プレイ済み
返信[2]
親投稿
nobu divine-creator
プチ子の破魔矢は、重力に関係なく神通力で平行に飛びます! 何その要らん情報…と思ったら大間違いで、要するに「魔法の矢などは、普通の矢とは違う飛び方をする」という話です♪ だから、「全ての矢の軌道が同じではない」ということですよ!
1そうだね
プレイ済み
返信[3]
親投稿
BIG_TEXTERさん≫いま3DSが使えないんで(おい)試せないんですが、「*」って「×」ってことですよね? nobuさん≫ああ、そういう考え方もいいですね、打ち出した角度のまま落ちずにそのまま飛んでいくみたいな?(そっちの方が楽そry)
1そうだね
プレイ済み
返信[4]
親投稿
イスターリャ arduinotexter
あ、私が示したのは速度ベクトルね。 つまり、速度ベクトルのXY成分それぞれを矢のXYに加算すれば、矢が動くというわけ。 で、これは物理の授業とかで習うはずなんだけど、空気抵抗を考えないなら矢にかかる力は重力だけなんだよね。 という訳で、速度ベクトルは段々下を向くんだよね。これを数値的に表すと、Y成分が段々と下に向くのと同じってこと。 「落ちる」時って、速度は段々増えていくんだけど、加速度は一定なんだよね。
1そうだね
プレイ済み
返信[5]
親投稿
単純に式を書くとこうなる(はず) X=Vt Y=-1/2gt^2+Vt X=速度×時間 Y=-1/2×重力加速度×時間の二乗+速度×時間 重力加速度は(地球なら)9.8としてやればOK 実際は空気抵抗もあるから違って来るけど、めんどくさくなるので割愛。 そもそも、この式であっているのかもよく分かっていないし。
2そうだね
プレイ済み
返信[6]
親投稿
nobu divine-creator
つまり、私が言いたかったのは、普通の矢と特殊な矢で設定を変えると良いということです! 1.短距離用の短い矢 2.中距離用の中くらいの矢 3.長距離用の長い矢 4.いろいろな効果を持つ魔法の矢 5.その他の改良をされた矢 …というように、矢の種類ごとに軌道を設定すると、戦略性が上がり面白くなります♪ ただし、作る人の大変さも増します…。
2そうだね
プレイ済み
返信[7]
親投稿
等加速運動っていいよね、と言ってみる。
1そうだね
プレイ済み
返信[8]
親投稿
MIKI ifconfig
速度に比例して抵抗が強くなるから空気抵抗係数 k とすると、 抵抗力 = -k*v 力F=ma より 加速度 a=F/m なので、 x方向は vx' = vx + (-k*vx)/m*dt y方向はこれを重力加速度に足せばいいので vy' = vy + (m * g - k * vy) / m * dt ここで mは弓の質量, g は重力加速度, dt はループの周期 (=約1/60s) これで速度が出たので、座標も計算する px' = px + vx' * dt py' = py + vy' * dt こんな感じです。 サンプルゲーム KING-VS-QUEEN KEY=Q3A3YXAS
2そうだね
プレイ済み
返信[9]
親投稿
みなさんありがとうございます(^-^) 3dsが復活した時にやってみたいと思います
2そうだね
プレイ済み