狠狠撸
Submit Search
4回目物理
?
Download as PPT, PDF
?
0 likes
?
362 views
Takuya Shishido
Follow
1 of 51
Download now
Download to read offline
More Related Content
4回目物理
1.
物理
2.
今回の目标は、重力で落下するキャラクタを作ること!
3.
どうすると落下するの? 今までやっているのでなんとなくわかると思いますが、 キャラクタの位置をどんどんズラしていけばよいです!
4.
試しにプレイヤーの値をどんどん増やして 位置を移動させてみましょう!
5.
どうです? 自然な感じになりました?
6.
…でも 画面の外に出ていきましたよね?w
7.
それはバグです! なんとかしないといけません!
8.
でもどうやって?
9.
実は、今日までの内容で解決できる課題です。 時間をとるので、解決方法を考えてみてください! プログラムは書かなくても大丈夫なので、 これが出来ればなんとかできる、という方法を紙に書いてみて!
10.
ヒント 1
11.
今 地面
12.
次の瞬间
13.
どう? これでなんかヒントになりました? でもこれはヒントで、おそらくこれをなんとか応用して さらにアレンジする必要があります。 ここでさらにお待ちしますので、 どうすれば良いのか考えてみてください!
14.
ヒント 2
15.
次の瞬间 この図は結構色々なヒントをくれる図です。 よくよく見てるとこういう風に見えてきます。
16.
次の瞬间 こういう風にみると、過去にやった内容に似てきますねぇ。 この図まで辿りつければそろそろ答えが近いです!
17.
さっきの図を极端にしてみると、
18.
見やすさを上げるために、シンプルにして大きさを変えてみました。 こう!
19.
そして私たちはこの情報を持っています。 ここの高さ! ここの高さ!
20.
ここの高さ! つまり、
21.
ここの高さ! ててーん! こう!
22.
落ちたけど、落ちてない!
23.
ここまでくればあとはそれをプログラムにするだけ! プログラムにするために何が必要が整理してみましょう。
24.
必要なのは、登場人物をプログラム上で区別する方法! 地面君と主人公君が当たった時だけ 主人公君がめり込んだ分だけ上に上がればいいわけです。
25.
HitTest() の lhs
や rhs には、 type というのがあります。 lhs.type が consts.CollitionGroup.Player consts.CollitionGroup.Ground だった場合だけ 特別な処理を書けば良い、ということです。 区別するには。
26.
ここから先はもう少しだけ自分で頑張ってみましょう。 上手く出来たかどうかは、プログラムが教えてくれます。 プログラムは思った通りには動かない、 書いてある通りにだけ動きます!
27.
じゃあ最后にジャンプさせてみましょう。
28.
↑ でジャンプするのが自然な気がするので 今回はそこをハックしてジャンプさせてみましょう。 ハックというのは、プログラムを解析して 自分の思い通りに動かすことを言います。 ハッキングの語源! でも悪いことをするのはクラッキングと言います。
29.
↑ を押した時に普通に player.y
に数字を足すとどうです?
30.
じゃあどうするとよいと思います?
31.
ここで物理ですよ!
32.
どういう感じになっていると 実際ジャンプしたっぽい?
33.
実は、人がジャンプして落下するのも、 投げられた物が辿る軌跡は同じ!
34.
物が放られた時にたどる線 放物線の話です。
35.
放物線って? 画像をググってみよう!
36.
方程式 y = -
x?
37.
…でもこのままではゲームには使えない感じです
38.
実际リアルな世界では何が起きているのか!!!
39.
http://www.mech.cst.nihon-u.ac.jp/studies/okano/studies/phys/buturi1.3.html v0 : 初速度 g
: 重力加速度 θ : 打出し角度 これだけあればもう充分ですね!
40.
なんてことは无い!!!
41.
あんなペラ1枚で何とかなるんだったら俺はいらないです! … でも、本物のゲームプログラマって ああいうのが理解出来ないといけないんですよ。 ゲームのプログラムというのは 科学技術の中でも最先端の技術が使われています。 物理現象もリアルな映像の制作方法も コンピュータに関する深い知識も必要です。 カナダとかでは国家プロジェクトです。 …その一端でも感じてもらえたら
42.
さて、今回の物理現象を かいつまんでわかりやすく表現していきますよ!
43.
今回の話は加速度と速度の話に落ち着きます。 速度はともかく、加速度ってなんでしょう?
44.
加速度とは、速度の変化率! 次の瞬间どれくらい早くなるか、を表す数字です! 位置には影響なくて、あくまで、速度だけに影響します。 そして速度は位置の変化率です。 物の移動というのはこういう流れで起きています。 …この流れを図に表すと
45.
加速 : 9.8 速度
: 0 加速 : 9.8 速度 : 9.8 加速 : 9.8 速度 : 19.6 加速 : 9.8 速度 : 27.4 9.8 9.8 9.8 加速ってこういうこと! 加速分だけどんどん早くなる! t (time)
46.
これでもうプログラムが書けますね。 player に、 acceleration
(加速度) と velocity (速度) を追加しましょう。 そこで、 Update() の一番最後で player.y += player.velocity; player.velocity += player.acceleration; player.acceleration += consts.gravity; KeyDownListener() の ↑ を押されたときに player.velocity = 100; をしてみましょう! さぁ、早速実験です!
47.
一定時間が経つと突然落ちる? それはバグですね(笑) ではそれを修正しましょう! ヒントは地面とぶつかった時にあります!
48.
というところで今日の講義は終了です。 お疲れさまでした。
49.
おまけ! 距離と速度と加速度と。
50.
距離と速度と加速度には深い深い関係があります。 今日は「変化率」という言葉を使って説明しました。 この変化率というのを数学の言葉で表現すると、 「微分」 と言います。 位置の変化量を距離。 距離を時間で微分すると速度。 速度を時間で微分すると加速度になります。 微分積分なんて世の役に立たない、とか思ってました? 私たちは日々微分積分に囲まれています!
51.
ホントの終わりです。 お疲れ様でした。
Download