初投稿です.
使用教材
「Unityによる3Dゲーム開発入門」
大学で借りました.返却期限までに終わらせたいです.
バージョン
Unity 2021.3.9f1
本題
第1章
導入とかだったので割愛
第2章
オブジェクトは役者,スクリプトが台本という考え方は自分になかった感覚で,以前よりも関係が分かりやすくなった気がします.
さっそくつまづきポイント
p11~12
シーンに配置したカプセルにPlatform Input Controller というコンポーネントを追加するとあるのですが,探してみても見つかりません.2011年の書籍で,ましてやコンピュータ関連ともなればいろいろ違ってくるのは仕方がないですね.
類似したコンポーネントがないかと探してみましたが,それも見つかりませんでした.Character Controllerとかどうなんだろうと思って調べましたが,どうやらこれキャラクターに使う用の当たり判定みたい,動かす機能は無さげでした.
最終的にこちらのサイトからキャラクターを動かすコードを使わせていただきました.
「Character Controller」を使ってオブジェクトを動かす【Unity】 | Unishar-ユニシャー
オブジェクトの動かし方
【Unity】アクションゲームにおけるキャラクターの移動方法 – 株式会社ライトコード
こちらの記事の話です.
オブジェクトを動かすには,大別して
1.Transformの数値をいじる
2.RigidbodyをつけたオブジェクトにAddForceで力を加える
という2つの方法があるようです.
1.Transformいじる系
オブジェクトのTransformの数値そのものを足したり引いたりして移動させます.
物理演算の影響を受けないのが特徴です.
2.物理演算で力を与える系
Rigidbodyなどで物理演算の影響を受けるようにしたオブジェクトに力を加えて移動させます.
教科書の方を優先していて手が付けられていないのですが,公式チュートリアルの Rall a Ball なんかは,AddForce系でやらないと球体の回転処理を別で加えないといけなさそうで面倒なんじゃないかと思います.
AddForceにも力を加えるのか加速度を加えるのかがあるようです.
確かに質量m,加速度a,力Fとして,
ma=F
Fが一定ならaが変化しますから,速度や距離も変わりますよね.反対にaが一定なら移動速度や距離は変わらずにFが変わると.Unityさすがだぁ...
ちなみに速度は
変化後の速度v,変化前の速度v0,加速度a,時間t として
v = v0 + (a * t)
x = (v0 * t) + 1/2(a * t^2)
で求められます.
(すみませんTeXわかんないです)