プレイ日記
スー thanks_0u0
画像ではわかりませんけれど、なんとなく加速度センサーに初挑戦です!いっぱい跳ねて楽しい!(・u・) 壁にぶつかったときの速度の減衰ってどうすれば。。。球同士の衝突とかもやってみたいけど、数学は高校の最初で挫折……とりあえず調べてみるー。頑張ろう……(・д・;) 当たり判定は半径と中心の距離で見れば良さそう?当たった後にどうなるかが謎。。。
11そうだね
プレイ済み
返信[1]
親投稿
スー thanks_0u0
うぎぎぎ……ベクトルとか内積とか何なのー(´=ω= ` ) これちゃんとわかろうとするとベクトルとか内積のお勉強から始めないといけないパターンだ。。。XとYで教えて欲しい。。。
0そうだね
プレイ済み
返信[2]
親投稿
スー thanks_0u0
よし、ダメそうなことがわかりました!ゴリッゴリの文系としては数理じゃなくて論理で教えてくれないと頭に入らないのですよ( ´ u ` )
2そうだね
プレイ済み
返信[3]
親投稿
物語にして教えて下さいなのよね。
2そうだね
プレイ済み
返信[4]
親投稿
MIKI ifconfig
ベクトルって矢印のことで、よく絵とかで「物がこっちに進む」のを表すのに物に矢印を付けて描くよね。あれがまあ速度ベクトル。 平面上で動くならx成分とy成分で表せる。 斜め60度に速度2m/sで移動している場合、そのx成分は 2*cos(rad(60))=1m/s, y成分は2*sin(rad(60))=√3m/s となります。 このx成分とy成分を(x,y)と表記するとそれがベクトル。 ちなみにキャラ座標も(px,py)で表したりしますよね。あれも「位置ベクトル」という名が付いています。 内積は単純に成分同士を掛けて足せばいいだけ。 (x1,y1) と (x2,y2) の内積 = x1*x2 + y1*y2 ベクトルの定数倍: c*(x1,y1)=(c*x1,c*y1) ベクトル同士の加算: (x1,y1)+(x2,y2)=(x1+x2,y1+y2)
1そうだね
プレイ済み
返信[5]
親投稿
MIKI ifconfig
反射は、大きさをとりあえず無視すれば、鏡で反射する光みたいな話。 とりあえず垂直な壁で考えます。 図の左下からやってきた玉は、壁が無ければそのまま真っ直ぐ進みます。 ところが壁があれはそこで鏡のように反射して、左上方向へと向きを変える。 反射による減衰がなければ、図のように反射点から上は二等辺三角形になる。 壁が無かった場合の到達点と、反射した場合の到達点の y 座標は同じ。 x 座標は壁を中心に、同じ距離だけ壁から離れている。 だから、壁が無かった場合の到達点座標を求め、x成分についてのみ壁からの変位を引いてやればいい。 反射により減衰する場合、反射角度は変わらず、単に到達距離が短くなる。 反射点から見て、減衰しない場合の到達点を (dx,dy) とすれば、減衰する場合は係数 0.8 を掛けて (0.8dx, 0.8dy) とすればいい。
2そうだね
プレイ済み
返信[6]
親投稿
ごぺんなさい。 めぐりはファジーな 計算で作るわね。 数学知識ないと そろそろ歯が立たないかしら? めぐりも文系なのよね。 一応。(何が?)
2そうだね
プレイ済み
返信[7]
親投稿
だにえる haru2016nen
壁にぶつかった時の減速って A==速度 のとき、 A=A/2 とかで良いんじゃない?
1そうだね
プレイ済み
返信[8]
親投稿
だにえる haru2016nen
もしくは A=A*0.8 とか? 必要なのは数学じゃなくて物理?
1そうだね
プレイ済み
返信[9]
親投稿
めぐりなんかだと ついゲーム性を重視しちゃうのよね。 リアルを追及する 計算式が分からないから… きっと分かればもっと 高度なプログラム 動かせるのね。 でもね。どんなに適当な式でも 動いた時の喜びは 出来合いの式ではなく 自分で作った式だと思うわ。
3そうだね
プレイ済み
返信[10]
親投稿
MIKI ifconfig
あ、だにえるさんの言うとおり。 上の説明だと変位の話なんだけど、実際には反射時に速度が一定の比率(反発係数)で減衰することで、単位時間後の到達距離も短くなります。 基本は質点の運動なので、加速度を時間で積分して速度を求め、速度を時間で積分して変位を求め、というコードを書いたと思います。 速度V' = V + 加速度A * dt (ここでdtは単位時間) ... (1) 変位P' = P + V' * dt ... (2) みたいな感じで。 さっきの図で、単位時間内に反射した話を考えると、衝突までは速度 V で移動し、衝突後は V' で移動するので、衝突後の変位は衝突点から見て deltaP'=V'*dt になるので、deltaP' が 0.8 倍で求まるってのは正解でいいのね。で次回の計算は V = 0.8V として (1) と (2) 式を計算すればいい。
1そうだね
プレイ済み
返信[11]
親投稿
スー thanks_0u0
わおー、サイト巡ってる内に解説が!ありがとうございます!( ´ ▽ ` )ノ ベクトルっていうのは、図に引っ張る矢印のカッコ良い言い方、ってことですね。三平方の定理とか三角関数でXYとベクトルを変換出来そうな感じでしょうか。 内積はかけるだけ…?それなら、かけたの、って言えば良いような?きっと何かによく使うから名前を付けられたのだと思いますけれど、今の所は謎の人物ミスター内積なイメージです。 なるほどー、減衰はXYどちらともに起こるんですね。確かにどっちかだと角度も変わっちゃう?図で考えると納得出来ますね! 跳ね返ったときの係数0.8は、イメージでは材質によりけりな感じですよね。勝手に決めて良い部分でしょうか(・ω・) 移動のために書いた式は単純に、速度+=加速度、位置+=速度、です。 単位時間はゲーム的には1fで*1、っていうこと?でしょうか。
0そうだね
プレイ済み
返信[12]
親投稿
スー thanks_0u0
数学は積み重ねってよく聞きますけれど本当にその通りで、1箇所わからなくなると連鎖的にその先もわからなくなっちゃう。逆に言えば何かを調べたいと思うと芋づる式にその前の勉強が必要に。辛い(´=ω= ` ) あっ、確かに物理ですね!でも文系からすると数字がごちゃごちゃ出てくるやつは全部数学だと思ってます。数字は文字のように明確なイメージが出来ないので、本当に外国語のような感じで。 私のイメージでは数式は「うさぎがたぬきになって、そこにくまがきたらきつねになって、それにすごいきかいをつかったらあざらしになりました。」みたいな感じなんですよね。間が飛びすぎで、うさぎどこ行ったの!?なんで変わるの!?すごいきかいって何!?ってなります( ´・ω・` ) 果たしてこの感覚は伝わるのか。。。そして苦手を克服することは出来るのか。。。
3そうだね
プレイ済み
返信[13]
親投稿
スー thanks_0u0
確かに私もアクションゲームとかだと、物理法則完全無視でゲームとして成り立てばそれで、って思うのですけれど、ものによっては挙動のリアルさがそのままゲーム性に直結することがあるので厄介です…(・д・) 動くと嬉しくなって、なんかふわっと動いてるからなんでもいっか!ってなっちゃいますよね。 でも今の時代プロプログラマーさんも細かい数式なんか全然しらなくて、ライブラリ使えば良いんだよ!どーん!みたいな方もいらっしゃいますし、もっと文系に優しい言語が出てきても良いと思いました。わがままですね(ノ´∀`*)
2そうだね
プレイ済み
返信[14]
親投稿
スー thanks_0u0
あ、文系向けの環境がユニティーとかアンリアルとかですね。取っ付きにくくてダメだったですけれど。。。(´=ω= ` ) あとプロユースのソフトって大抵黒っぽいウィンドウでテンション下がるからスキンとかウィンドウ色の変更を標準搭載して欲しい。。。SAIみたいな楽しそうなウィンドウください。色彩心理の観点を取り入れれば仕事の能率アップにも繋がるかもしれませんし!いやここで言ってもしょうがないですけれどー(ノ´∀`*)
0そうだね
プレイ済み
返信[15]
親投稿
MIKI ifconfig
> 三平方の定理とか三角関数でXYとベクトルを変換出来そうな感じでしょうか。 だいたい合ってます。 > 内積はかけるだけ…?それなら、かけたの、って言えば良いような? その通り。よく出てくる重要な式なので名前が付いてます。重要な割には直観的な解釈が無いので、私のような直観に頼る派とは相性悪いです。 a=(x1,y2), b=(x2,y2) をベクトルとし、それらのなす角をθとすると 内積 = |a|*|b|*cos(θ) という定義もあります。ここで |a| は「ベクトル a の長さ」 (成分で表すとやはり内積=x1*x2+y1*y2になります) 図でいうと、aに垂直で長さがaに等しい a'という点を考えると、 内積=|a|*|b|*cosθは紫の長方形の面積に等しい。 ∵縦=|a|, 横=|b|*cosθ なので θ=90度なら内積が0になるのがわかりますよね。これ重要ポイント
1そうだね
プレイ済み
返信[16]
親投稿
MIKI ifconfig
厳密ではないけど無理やり直観的な話にすると、内積とは 「ベクトル a が物を引っ張るとき、 a の仕事に対して ベクトル b がどれだけ協力的か?」 というのを表している(と思うことができる)。 a と b が同じ方向を向いていれば、b の協力は a にとって大変助けになります。(内積>0) θが+-90度だったら、b が引っ張る力は a にとっては 0 であり、助けにも邪魔にもならない。(内積=0) θが+-90度を越えると、b の「協力」はむしろ a にとって妨げになる(内積<0)
2そうだね
プレイ済み
返信[17]
親投稿
MIKI ifconfig
>係数0.8は、イメージでは材質によりけり 好きに決めていいです。現実では 1 以上はありえませんが、シミュレーションなら 1 以上も可能。現実にありえない世界を体感できます。 > 速度+=加速度、位置+=速度、です。単位時間はゲーム的には1fで*1 ですね。その場合速度の単位は pixel/frame 加速度は pixel/frame/frame となります。 物理計算の場合は単位が重要になってきます。なんか変と思ったら単位が整合してるかどうかチェックするといいです。
2そうだね
プレイ済み
返信[18]
親投稿
スー thanks_0u0
とりあえずネットの式を丸写しして動くところをみてみよう!……って思って丸写ししたら、ぶつかる度に徐々に速度があがって、今ボールさんはとんでもないスピードで飛び回っています。どうしてこうなった。。。( ; ω ; ) きっと何かを間違えているのだとは思いますが、、、むー(´=д= `)
2そうだね
プレイ済み
返信[19]
親投稿
スー thanks_0u0
なるほど、内積は紫の四角ですね!ちょっとまだ何に使うのかはよくわかってませんけれど、三角関数と同じように図だけ覚えておこうと思います!( ´ ω ` ) 引っ張るときの協力度(?)は何となくイメージしてみましたけれど、Bさんが90度で引っ張った時Aさんの引く力に関係ないっていうのはイメージと何か違うような。。。すごく邪魔そうなのですが、理論上は邪魔にならないものなのでしょうか。不思議です(・ω・)
0そうだね
プレイ済み
返信[20]
親投稿
MIKI ifconfig
> すごく邪魔そう まあこの辺が例え話の限界ぽいとこなんだけど、 極めて短時間で見ると、bが90度なら aの邪魔にはならないってのはいいですかね? その状態が続くと、物は a と b の両方に引かれてしまい、物を中心とした a と b とのなす角が 90 度ではなくなり、実際には90度以上になるので速やかに「邪魔」状態に移行しまうわけです。 つまり、さっきのは微小時間でしか成立しないたとえ話なのでした。 この辺が「なんかだまされた感」「納得できない感」につながり、物理ぎらいとか数学ぎらいに繋がりがちなんですよね。 それでも、とても抽象的な概念である内積に一定の具象的イメージを与えるものとしては悪くないなと思っています。 あと内積を「かけたもの」と言わない理由ですが、ベクトルの場合「かけたもの」がたくさん(内積・外積・ベクトル積)あるからってのもありますね。
1そうだね
プレイ済み
返信[21]
親投稿
スー thanks_0u0
なるほど理解です!物とAさんBさんの作る角度が90度じゃなくなるから邪魔になるんですね。 90度を崩さないように、AさんBさんが頑張って物と一緒に斜めに移動しながら引っ張ると、確かに邪魔にならなさそうな気がしないでもないです。納得しました(・u・) かけたものいっぱいあるんですかー。流石数学、専門用語の塊。。。(´=ω= ` ) でも内積の最初のイメージは何となく出来た気がします。丁寧にわかりやすく説明して下さってありがとうございます!( ´ ▽ ` )ノ こういうことって数学のサイトとかには書いてないので、苦手な人にとってはすごく助かります。
1そうだね
プレイ済み
返信[22]
親投稿
スー thanks_0u0
雰囲気で色々いじってみたけど、絶えずモゾモゾしてるし、急に弾け飛ぶし、すごくキモい。。。( =∀= ;) 複数のボールの衝突はちょっと早すぎたみたいです。レベルが足りない。
1そうだね
プレイ済み
返信[23]
親投稿
だにえる haru2016nen
eショップでもスマホアプリでもある 「Q」みたいな?
1そうだね
プレイ済み
返信[24]
親投稿
スー thanks_0u0
Qってなんか物理パズルですよね。一回やったことあります(・u・)
1そうだね
プレイ済み