# 2Dアクションゲームを作るうえでの諸問題(ver.2019) ## キャラクターモデルをどうするか 3Dのコライダーを使うのはあまり適当とは言えない。処理する量が増えるし、予期せぬトラブルが入り込む余地があるからである。よって、2Dの衝突判定を行うものとする。 3dモデルを使用する場合、3dのスクショを撮って取り込む方式がある模様。めんどくさそう。3DのRigidbodyでFreese使えば何とかなら…ないか。 **同じ位置にモデル置けばよくね。どうせ判定しないなら、問題なさそう** ## 衝突判定問題 transformをいじるのはワープなので当然なし。 ### FixedUpdate 徹底すべきなのは移動はここで呼ぶこと。一方で、攻撃などのボタン押下の瞬間を捉えるのはUpdateやコルーチンで行ったほうが良い。FixedUpdateは物理演算前に必ず行われるが、回数が不定だからである。 ### isKinematic 他のRigidbodyなどから受ける影響を完全に無視するようになる。絶対強者。 ### MovePosition rigidbodyの位置を動かすあれ。実はそこに移動する為の速度を与えているようである。つまり、実質AddForce...?少なくともPositionに直代入すると瞬間移動のようになるようで、移動間の接触を完全に無視する。 **とすると、移動速度を求めるための時間はどこから捻出しているのか。** →次回の物理演算更新までに移動するようである。あれ、これだとFixedUpdateの回数次第で変わっちゃうような。つまり、Updateで移動判定しても問題がないのでは。 Update(){MovePosition()}→FixedUpdate&物理更新(ここで移動が行われる)→n回(こちらではもう移動は行わない)→Update(){MovePosition()} ###### MovePosition時のKinematic | |Kinematic |Dynamic | |---|---|---| |**Kinematic** |無視 |押し出す| |**Dynamic**|押し出される |無視 | https://docs.unity3d.com/ja/current/ScriptReference/Rigidbody2D.MovePosition.html ### AddForce ガチ力学。少しずつ力を加えたり、力積にしてドカンと与えたりできる。扱いが難しい為、気持ちいい挙動に使うにはやや工夫が必要そう。ギミックや演出なら使いやすいかも。 ## クラス関係 基本はMVC # カメラ制作タスク ## キャラクターに追従 指定された移動数値だけ移動する。 ## 枠外を映さない 一定の枠が写っている場合は、動かない。 カメラの枠をゲームオブジェクトで用意しておいて、衝突判定でやる。 ## 寄る 演出的に寄って見せたい。画角を変更する。 ### 画角って?