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

More Related Content

Viewers also liked

Tensor Decomposition and its Applications
Tensor Decomposition and its ApplicationsTensor Decomposition and its Applications
Tensor Decomposition and its ApplicationsKeisuke OTAKI
 
Online Stochastic Tensor Decomposition for Background Subtraction in Multispe...
Online Stochastic Tensor Decomposition for Background Subtraction in Multispe...Online Stochastic Tensor Decomposition for Background Subtraction in Multispe...
Online Stochastic Tensor Decomposition for Background Subtraction in Multispe...ActiveEon
 
KDD読み会(図なし版)
KDD読み会(図なし版)KDD読み会(図なし版)
KDD読み会(図なし版)Keisuke OTAKI
 
Matrix and Tensor Tools for Computer Vision
Matrix and Tensor Tools for Computer VisionMatrix and Tensor Tools for Computer Vision
Matrix and Tensor Tools for Computer VisionActiveEon
 
Generalization of Tensor Factorization and Applications
Generalization of Tensor Factorization and ApplicationsGeneralization of Tensor Factorization and Applications
Generalization of Tensor Factorization and ApplicationsKohei Hayashi
 
行列およびテンソルデータに対する機械学習(数理助教の会 2011/11/28)
行列およびテンソルデータに対する機械学習(数理助教の会 2011/11/28)行列およびテンソルデータに対する機械学習(数理助教の会 2011/11/28)
行列およびテンソルデータに対する機械学習(数理助教の会 2011/11/28)ryotat
 
tensor-decomposition
tensor-decompositiontensor-decomposition
tensor-decompositionKenta Oono
 
2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)Tatsuya Yokota
 
Introduction to DEEPstation the GUI Deep learning environment for chainer
Introduction to DEEPstation the GUI Deep learning environment for chainerIntroduction to DEEPstation the GUI Deep learning environment for chainer
Introduction to DEEPstation the GUI Deep learning environment for chainerRyo Shimizu
 

Viewers also liked (10)

Tensor Decomposition and its Applications
Tensor Decomposition and its ApplicationsTensor Decomposition and its Applications
Tensor Decomposition and its Applications
 
Online Stochastic Tensor Decomposition for Background Subtraction in Multispe...
Online Stochastic Tensor Decomposition for Background Subtraction in Multispe...Online Stochastic Tensor Decomposition for Background Subtraction in Multispe...
Online Stochastic Tensor Decomposition for Background Subtraction in Multispe...
 
KDD読み会(図なし版)
KDD読み会(図なし版)KDD読み会(図なし版)
KDD読み会(図なし版)
 
Matrix and Tensor Tools for Computer Vision
Matrix and Tensor Tools for Computer VisionMatrix and Tensor Tools for Computer Vision
Matrix and Tensor Tools for Computer Vision
 
Generalization of Tensor Factorization and Applications
Generalization of Tensor Factorization and ApplicationsGeneralization of Tensor Factorization and Applications
Generalization of Tensor Factorization and Applications
 
Chapter4 1 takmin
Chapter4 1 takminChapter4 1 takmin
Chapter4 1 takmin
 
行列およびテンソルデータに対する機械学習(数理助教の会 2011/11/28)
行列およびテンソルデータに対する機械学習(数理助教の会 2011/11/28)行列およびテンソルデータに対する機械学習(数理助教の会 2011/11/28)
行列およびテンソルデータに対する機械学習(数理助教の会 2011/11/28)
 
tensor-decomposition
tensor-decompositiontensor-decomposition
tensor-decomposition
 
2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)
 
Introduction to DEEPstation the GUI Deep learning environment for chainer
Introduction to DEEPstation the GUI Deep learning environment for chainerIntroduction to DEEPstation the GUI Deep learning environment for chainer
Introduction to DEEPstation the GUI Deep learning environment for chainer
 

More from Takuya Shishido

会社を作ってみた
会社を作ってみた会社を作ってみた
会社を作ってみたTakuya Shishido
 
9回目プログラム全体の説明とタイトル画面
9回目プログラム全体の説明とタイトル画面9回目プログラム全体の説明とタイトル画面
9回目プログラム全体の説明とタイトル画面Takuya Shishido
 
8回目ファイル読込み(セーブデータ)
8回目ファイル読込み(セーブデータ)8回目ファイル読込み(セーブデータ)
8回目ファイル読込み(セーブデータ)Takuya Shishido
 
7回目テキスト・ステージ管理
7回目テキスト・ステージ管理7回目テキスト・ステージ管理
7回目テキスト・ステージ管理Takuya Shishido
 
6回目スクロール
6回目スクロール6回目スクロール
6回目スクロールTakuya Shishido
 
5回目Java script構文
5回目Java script構文5回目Java script構文
5回目Java script構文Takuya Shishido
 
1回目勉強会の説明
1回目勉強会の説明1回目勉強会の説明
1回目勉強会の説明Takuya Shishido
 
インストールしてね!
インストールしてね!インストールしてね!
インストールしてね!Takuya Shishido
 

More from Takuya Shishido (17)

会社を作ってみた
会社を作ってみた会社を作ってみた
会社を作ってみた
 
Game
GameGame
Game
 
Unity install
Unity installUnity install
Unity install
 
10回目nodejs
10回目nodejs10回目nodejs
10回目nodejs
 
9回目数学関数
9回目数学関数9回目数学関数
9回目数学関数
 
9回目プログラム全体の説明とタイトル画面
9回目プログラム全体の説明とタイトル画面9回目プログラム全体の説明とタイトル画面
9回目プログラム全体の説明とタイトル画面
 
8回目ファイル読込み(セーブデータ)
8回目ファイル読込み(セーブデータ)8回目ファイル読込み(セーブデータ)
8回目ファイル読込み(セーブデータ)
 
7回目テキスト・ステージ管理
7回目テキスト・ステージ管理7回目テキスト・ステージ管理
7回目テキスト・ステージ管理
 
5回目宿題解答
5回目宿題解答5回目宿題解答
5回目宿題解答
 
6回目スクロール
6回目スクロール6回目スクロール
6回目スクロール
 
5回目Java script構文
5回目Java script構文5回目Java script構文
5回目Java script構文
 
3回目キー入力
3回目キー入力3回目キー入力
3回目キー入力
 
2回目アニメ
2回目アニメ2回目アニメ
2回目アニメ
 
1回目勉強会の説明
1回目勉強会の説明1回目勉強会の説明
1回目勉強会の説明
 
1回目衝突判定
1回目衝突判定1回目衝突判定
1回目衝突判定
 
Svn information
Svn informationSvn information
Svn information
 
インストールしてね!
インストールしてね!インストールしてね!
インストールしてね!
 

4回目物理