質問: 現在、独学でUnityの勉強をしています。20代社会人です。 プログラミング経験は、PHPやJavaScript等、WEBプログラム系です。ゲーム開発経験はありません。 Unityで、スーパーマリオ64のような、3Dアクション系ゲームを作ってみたく、それに必要なことをいろいろ調べたり、Unity本体を触ってきました。 しかし、こういったゲームプログラミングの経験はなかったので、なかなか馴染むことが出来ずにいます。 特に、操作するキャラクターに追従するカメラワークの実装等、3D空間のオブジェクトを移動させる処理等は、ネット上のソースをコピーしてしまい、中の内容を紐解くことが出来ていません。 覚えが悪いのは、自分が三次元空間におけるオブジェクトの立ち位置のx,y,zやベクトル、数学的な考え方が身についていないのでは?と考え始めています。 実際に数学は中学レベルのまま止まっている状態です。 **「Unityおよびゲームプログラムは数学と深い関わりがあるから、切っても切り離すことは出来ない。必要な知識」**とまで書いてある書籍も見かけました。 なので、現在はUnityに触る前に、「ベクトル」「ピタゴラスの定理(三平方の定理)」など、高等数学の勉強を始めています。 しかし、その勉強は一体どこまで学べば終わりなのか、Unityにおいてどこで応用が利くのか分からないまま勉強を進めているため、終わりのない道を歩いているような感覚です。 一方では、**「数学的な難しい内容は、Unityではすべて関数でまとめてくれている。そんな勉強するくらいならUnity自体の理解度や、標準の関数を覚えたほうがマシだ」**と言われたことがあります。 こちら意見も的を得ていると思うのですが、数学の知識が無かったことで、どこかでつまづいてしまわないかが心配です。 そこで皆さんにお聞きしたいのは、勉強の優先度です。 1. 最低限、高校数学レベルを身につけないと、Unityで3Dゲームの開発なんてできないから、数学の勉強から始めるべき。 2. 数学の勉強よりも、Unityそのものの勉強を始めても問題はない。 自分のような悩みを抱えている人がいた場合、皆さんならどちらを勧められますか? Unity経験者の方は、是非答えを聞かせていただきたいです。 ※プログラムの内容に関する質問ではありませんが、プログラムの勉強方法で悩んでいるため、質問として投稿させていただきました。
回答: 私はまだまだUnityの勉強中ですので偉そうな事がいえる立場ではありませんが、私も皆様と同じように2番をお勧めします。 大抵の処理に関しては「足し算」「引き算」「割り算」「掛け算」「割り算の余り」「if文」「for文」が理解できれば実行させることは可能です。 剛体演算だのといった難しい事の多くはUnity側が処理してくれます、問題なのはそれをUnityで動かすためにはどういう命令文を書く(もしくはどういうコンポーネントを追加する)必要があるのか?という所だと思います。 そしてそれらの多くはネットで書かれています、それでも解らない時は私はこのサイトで質問させていただいています。 三角関数を用いて敵キャラを動かしたりする場合でも、開発者はスプリクトで「Mathf.Cos」という自動で計算してくれる関数などもあります、そこにとりあえず値を放り込んで実行してみるだけでも何となく理解できると思います。 どうしても複雑な数式になってしまう場合は調べる必要性が出てくるかもしませんが、その時に改めて調べて勉強すれば解決すると思います、そしてUnityの使い方もとにかく解らない項目を調べて実行して理解するの繰り返しです。 結構プログラムとかUnityの項目が英語という事で躊躇される方もいらっしゃいますが、トライ&エラーで色々と試してみる事をお勧めします。 動かしたい仕様に従って作って動く楽しみをまずは感じて欲しいと思います。 苦労しながらも色々と試してその結果、思ったとおりに動いてくれた時は私はディスプレイの前で「よっしゃーー!!」と喜んだりしています、これがないとプログラムの勉強は疲れてしまいます。 折角Unityという便利な開発ツールが生まれ、素人でもゲームが作りやすい環境が生まれたのですが、是非とも目一杯活用して、自分の作りたい物を実現して欲しいと思います。