質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

Unityで数学知識はどこまで必要ですか?

sanset
sanset

総合スコア186

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

4回答

0グッド

1クリップ

12317閲覧

投稿2017/03/30 12:25

編集2017/03/30 12:35

現在、独学でUnityの勉強をしています。20代社会人です。
プログラミング経験は、PHPやJavaScript等、WEBプログラム系です。ゲーム開発経験はありません。

Unityで、スーパーマリオ64のような、3Dアクション系ゲームを作ってみたく、それに必要なことをいろいろ調べたり、Unity本体を触ってきました。
しかし、こういったゲームプログラミングの経験はなかったので、なかなか馴染むことが出来ずにいます。
特に、操作するキャラクターに追従するカメラワークの実装等、3D空間のオブジェクトを移動させる処理等は、ネット上のソースをコピーしてしまい、中の内容を紐解くことが出来ていません。

覚えが悪いのは、自分が三次元空間におけるオブジェクトの立ち位置のx,y,zやベクトル、数学的な考え方が身についていないのでは?と考え始めています。
実際に数学は中学レベルのまま止まっている状態です。
**「Unityおよびゲームプログラムは数学と深い関わりがあるから、切っても切り離すことは出来ない。必要な知識」**とまで書いてある書籍も見かけました。

なので、現在はUnityに触る前に、「ベクトル」「ピタゴラスの定理(三平方の定理)」など、高等数学の勉強を始めています。
しかし、その勉強は一体どこまで学べば終わりなのか、Unityにおいてどこで応用が利くのか分からないまま勉強を進めているため、終わりのない道を歩いているような感覚です。

一方では、**「数学的な難しい内容は、Unityではすべて関数でまとめてくれている。そんな勉強するくらいならUnity自体の理解度や、標準の関数を覚えたほうがマシだ」**と言われたことがあります。
こちら意見も的を得ていると思うのですが、数学の知識が無かったことで、どこかでつまづいてしまわないかが心配です。

そこで皆さんにお聞きしたいのは、勉強の優先度です。
0. 最低限、高校数学レベルを身につけないと、Unityで3Dゲームの開発なんてできないから、数学の勉強から始めるべき。
0. 数学の勉強よりも、Unityそのものの勉強を始めても問題はない。

自分のような悩みを抱えている人がいた場合、皆さんならどちらを勧められますか?
Unity経験者の方は、是非答えを聞かせていただきたいです。

※プログラムの内容に関する質問ではありませんが、プログラムの勉強方法で悩んでいるため、質問として投稿させていただきました。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答4

6

なぜそんなに失敗を恐れるのでしょう?
つまづいた時につまづいたところを勉強すればいいだけです。

投稿2017/03/30 16:39

Zuishin

総合スコア27644

ozwk, sanset, mugicya, doubutweet, eien_beginner, TakenakaRiki👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

sanset

2017/04/02 03:08

回答ありがとうございます!そうですね、あまりの先の見えなさに臆病になっていたのかもしれません。1つずつ学んでいきます。

5

「何を作るか」によりますが、基本的には2番を推します。

同じ3Dアクションでも、「物理エンジンに処理を丸投げしていいゲーム(例:ゴミ箱)」は数学(あるいは物理学)を知らずともAddForceだけしていれば何とかなります。(ならない時もありますが)
一方で「物理法則を一部無視したアクションを行うゲーム(例:マリオ、モンハン等)」では、三角関数などを駆使する必要が出て来ます。

また、「普通に実行する分にはUnityの既存APIをそのまま使えばいいが、一工夫する為には数学的な考え方が必要」みたいなパターンもあります。
(個人的には確率計算(PだのCだの)が必要になり慌てて勉強し直したことがあります)

これは作ってみないと分からない部分が大きいので、
「行き詰まったら『使えるUnityの既存APIはないか』『数学的に解けないか』の両方を調べる&考える」
という方法が一番効率的だと思います。
(ただ勉強するだけはつまらないですしね。もちろん学習優先なら、先に勉強する→それを活かせるゲームを作ってみる、という逆パターンもありだと思います)

ネット上のソースをコピーしてしまい、中の内容を紐解くことが出来ていません。

ただし、どちらにしろこれは危険です。
何千行もあるAssetのスクリプトを全て読めとは言いませんが、コピペするレベルのソースならば、どの行が何をしているのか把握しておくべきです。
理解すれば別の部分でも応用が利きますし、理解しないままだとバグの温床になります。

投稿2017/03/31 01:58

sakura_hana

総合スコア11411

mhashi, sanset, intenseG, sitappa1981, TakenakaRiki👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

sanset

2017/04/02 04:01

回答ありがとうございます!分からなくなった段階で、知識を身に付けるほうが効率的ですね。 ソースコードもしっかり理解した上で実装したいと思います。アドバイスありがとうございます!

5

ベストアンサー

私はまだまだUnityの勉強中ですので偉そうな事がいえる立場ではありませんが、私も皆様と同じように2番をお勧めします。
大抵の処理に関しては「足し算」「引き算」「割り算」「掛け算」「割り算の余り」「if文」「for文」が理解できれば実行させることは可能です。
剛体演算だのといった難しい事の多くはUnity側が処理してくれます、問題なのはそれをUnityで動かすためにはどういう命令文を書く(もしくはどういうコンポーネントを追加する)必要があるのか?という所だと思います。
そしてそれらの多くはネットで書かれています、それでも解らない時は私はこのサイトで質問させていただいています。
三角関数を用いて敵キャラを動かしたりする場合でも、開発者はスプリクトで「Mathf.Cos」という自動で計算してくれる関数などもあります、そこにとりあえず値を放り込んで実行してみるだけでも何となく理解できると思います。
どうしても複雑な数式になってしまう場合は調べる必要性が出てくるかもしませんが、その時に改めて調べて勉強すれば解決すると思います、そしてUnityの使い方もとにかく解らない項目を調べて実行して理解するの繰り返しです。
結構プログラムとかUnityの項目が英語という事で躊躇される方もいらっしゃいますが、トライ&エラーで色々と試してみる事をお勧めします。
動かしたい仕様に従って作って動く楽しみをまずは感じて欲しいと思います。
苦労しながらも色々と試してその結果、思ったとおりに動いてくれた時は私はディスプレイの前で「よっしゃーー!!」と喜んだりしています、これがないとプログラムの勉強は疲れてしまいます。
折角Unityという便利な開発ツールが生まれ、素人でもゲームが作りやすい環境が生まれたのですが、是非とも目一杯活用して、自分の作りたい物を実現して欲しいと思います。

投稿2017/03/30 20:14

sitappa1981

総合スコア64

kyooo_, mhashi, sanset, mugicya, TakenakaRiki👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

sanset

2017/04/02 04:00

回答ありがとうございます!初心者の僕目線でアドバイスを下さり、とても心にしみました。励みになります。Unityから勉強をしていきたいと思います!

4

場当たり的だと言われようが、僕は2を推します。
いるかいらないか分からない数学の勉強などしたくないからです。
脳の肥やしにはなるので、全く無駄とはいいませんが…。

まず、作りたいもののビジョン、それに必要な数学の知識が発覚した時点でそれを勉強します。
(あなたの言うカメラワークなど。)
その内容が解らない時は、その知識がどのレベルの物か調べ、自分が解るところまで戻り、
そこに向かって数学の勉強をしたほうが楽しいです。

やっぱり、バグっていようが画面が動いて悩む方が楽しいのです。

投稿2017/03/30 14:50

mugicya

総合スコア1046

ozwk, sanset, doubutweet, TakenakaRiki👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

sanset

2017/04/02 03:07

回答ありがとうございます!たしかに画面を見てトライ&エラーしたほうがモチベーションも保ちやすそうです。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。