2018年11月19日お疲れ様です。前回は、カメラをプレイヤーに追従させました。Unity側から変数を初期化したり、オブジェクトを渡したりしました。以前から軽く触れ続けてはいましたが、基本的な概念の中に「親子関係」というものがあります。これは、Unityに限らず3Dプログラミング全般で重要になってくる概念です。今回は、今までほったらかしていた「親子関係」について話をしようと思います。ケンタ今回は、解説だけだから進捗は特に無いんだな。親子関係とはリュウキ親子関係ってことは、現実の親子と同じようなものだよな?ゲームで親子ってどういうことだ?そもそも、誰の親子関係かと言うとゲーム内のオブジェクトとオブジェクトの関係の事を指します。現実での親子の振る舞いは色々ありますが、ここで言う親子関係はもう少し限られた意味を持ちます。親子関係のざっくりとした特徴は、以下の2つです。親は子の見本となるので、親が動くと子は親に影響されて一緒に動きます。子は親を見本として動くので、子が動くときは親の影響を受けて動きます。ここで大事になってくるのは、子は親の影響を受けるというところです。ついてもう少し詳しく見ていきましょう。ケンタ親子関係は、子が親の影響を受けて動く関係の事なんだな。親が動いた時の子の動き方リュウキ子は親の影響を受けるんだよな。親が動くと子はどう動くんだ?子は親の影響を受けるので、親が移動すれば子も移動します。位置移動はそこまで難しくないですが、回転と拡縮は少し特殊な動きをします。具体的な動き方は、以下の通りです。親の位置が移動した場合、親と一緒に子の位置も同じ分だけ移動します。親が回転した場合、親はその場で回転し、子は親を中心に回転します。親が拡縮した場合、親はその場で拡縮し、子は親が拡縮した分移動しながら拡縮します。この様に、親が移動すると子は親を中心として親の影響を受けながら移動するのが特徴です。ケンタ親の位置が移動すると、子の位置も同じように移動する。親が回転すると、子は親を中心に回転する。親が拡縮すると、子は親の拡縮分移動しながら拡縮する。子は親を中心として親の影響を受けながら移動するんだな。子が動いた時の子の動き方リュウキ親が動くと、子は親の影響を受けて一緒に動くんだな。子が自分で動いたときは親の影響は受けないのか?親が移動したときは、子は親の影響を受けて一緒に移動しました。子が自身で移動した場合はどのように動くでしょう?子は親が移動した際に影響されましたが、厳密には子が親の影響を常に受け続けているという表現が近いと思います。子が移動する際にも親の影響を受けながら移動する訳です。具体的な動き方は、以下の通りです。子の位置が移動する際は、親の回転、拡縮により移動方向と移動量が変化します。子が回転する際は、親の回転により回転方向が変化します。この時、親の拡縮により子の形が歪みます。子が拡縮する際は、親の回転、拡縮により拡縮方向と拡縮量が変化します。この様に、子が移動する際は親の影響を受けて方向や移動量等が変化します。違う考え方をすると、次のような考え方もできます。オブジェクトはそれぞれ横(x)、縦(y)、奥行き(z)の3つの軸を持っています。親が移動すると、子も移動すると同時に子の持っている軸も一緒に移動します。子が移動する際は、子が持っている軸を基準として移動します。こちらの方がピンとくる方もいるかもしれません。どちらでもいいので、自身に合った方で覚えてみてください。因みに、本当に深く追求しようと思うと、数学の行列の概念が出てきます。ここまで来ると、かなり難しくなってくると思うので、現時点では私のブログで取り扱うつもりはありません。この辺りの話まで気になる方は、お手数ですがご自身で調べてみてください。ケンタ子の位置が移動する際は、親の影響で移動方向と移動量が変化する。子が回転する際は、親の影響で回転方向が変化して、子の形が歪む。子が拡縮する際は、親の影響で拡縮方向と拡縮量が変化する。子が移動する際は、親の影響で方向や移動量等が変化するんだな。際に影響されるものがあります。計算の順序によるものです。言い換えると、「回転」は「位置」の影響を受け、「拡縮」は「位置」と「回転」の影響を受ける事になります。この考え方は、先程軽く触れた数学の行列の話にも関わってきます。言って、行列を覚えろと言うつもりはありません。厳密にいうと計算順序によって「回転」や「拡縮」が影響を受けるという事ぐらいは覚えておくと便利かもしれません。しても覚えきれない場合は、実際にUnityで親子関係を持ったオブジェクトを置いてみましょう。それらのオブジェクトを好きなように動かしてみましょう。そのように動かしてみる事で、何となくでも動かし方のコツがつかめてくるかもしれません。習うより慣れろと言うくらいですから、分からない場合は実際に動かしてみると、簡単に習得できるかもしれません。今回のまとめ今回は、3Dゲームにおける親子関係について解説しました。端的にまとめると、以下の通りです。今回のまとめ親が移動する際は、子は親の影響を受けながら親を中心として移動します。子が移動する際は、親の影響で方向や移動量等が変化します。親子関係は、あるオブジェクトと一緒に動かしたいオブジェクトがある時に使うと便利です。皆さんも、自身で色々試しながら親子関係をマスターして、オブジェクトの動かし方の幅を広げてみてはいかかでしょうか。それでは、今回はここまでにしたいと思います。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目です上に表示された文字を入力してください。新しい投稿をメールで受け取るUnity側から変数の初期化スマブラで勝ちたいせいさくしゃゲームの専門学校を卒業し、一瞬ゲーム会社に就職して、早くも退職したゲームプログラマだった者です。ゲーム作りの話題を中心に、イラスト制作やゲームプレイ等の寄り道を交えて、記事を書いていこうと思います。せいさくしゃの寄り道ゲーム作りログ。