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

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

ただいまの
回答率

90.52%

  • Unity

    3978questions

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

  • Unity3D

    1286questions

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

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

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,426

sanset

score 159

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

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

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

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

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

そこで皆さんにお聞きしたいのは、勉強の優先度です。

  1. 最低限、高校数学レベルを身につけないと、Unityで3Dゲームの開発なんてできないから、数学の勉強から始めるべき。
  2. 数学の勉強よりも、Unityそのものの勉強を始めても問題はない。

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+4

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/02 12:08

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

    キャンセル

+4

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

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/02 13:01

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

    キャンセル

checkベストアンサー

+3

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/02 13:00

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

    キャンセル

+3

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/02 12:07

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

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    3Dゲーム作成でUnity以外なにかありませんか?

    C#とJAVAがまったくわからないのでC++で開発したいのですが、Unity以外でありませんか? SpriteKitでもいいのですが、どうなんですか? また、Cocos2d-xでも

  • 受付中

    Unity 自分から見た座標の取得方法

    Unityにおいて、あるオブジェクトの座標系から見たもう一方のオブジェクトの位置を取得する方法はありますでしょうか。 transform.InverseTransformDire

  • 解決済

    Unityの学習について

    素朴な疑問で失礼します。 Unityで1からゲームを作れるようになるまでどういう風にUnityを学んでいますでしょうか。 Unityは以前から参考書を用いて学習を進めて

  • 解決済

    thisとthis.gameObjectの違い

    前提・実現したいこと thisとthis.gameObjectの違いは何なのでしょうか? また、自身にアタッチしているコンポーネントを取得する際は、どちらで書くべきなのでしょう

  • 解決済

    Unity-Update上の判定で一度だけメソッドを呼び出す

    Unityでゲームを制作しています。 例えば、ゲーム上でスコアが一定値に達するたびにステージの難易度が上がり、画面に「ステージ〇〇」というテキストのカットインを入れたりするよう

  • 解決済

    【C#】【Unity】IF文によるvarの宣言について

    お世話になります。 初歩的な質問で申し訳ありません。 自分でなんとか調べようと思ったのですが、どう調べればよいかわからずに質問させていただきました。 public bool b

  • 解決済

    C#で遺伝的アルゴリズムの組み方がいまいちわかりません

    前提・実現したいこと 大学生です。 Unityで遺伝的アルゴリズムを利用して2Dタワーディフェンスゲームを作ろうとしているのですが、C#に触れるのが初めてなもので、理論は理解してい

  • 解決済

    staticな変数、メソッドを実装するデメリットについて教えてください

    質問内容 Staticな変数やメソッドを用いる際のデメリットや、気をつけなければいけない点について、どなたか教えて頂けないでしょうか? 凄く漠然とした質問で申し訳ないのですが、

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

  • Unity

    3978questions

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

  • Unity3D

    1286questions

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