Cou氏の徒然日記

ほのぼの日記ブログです。

その他学習

Unityで遊ぼう [ブロック崩し編 その6:ブロックの色を変えてみる]

前回の続き。 coublood.hatenablog.com ブロックの色も、最初はMaterialでつけていたんですが・・・ ずっと買えないものであれば、特に問題はないんですが、色々なパターンを作りたい場合は、その分、Materialを作成・設定して、それをGameObjectに反映しな…

Unityで遊ぼう [ブロック崩し編 その5:キーを押したらボールが出るようにする]

前回の続き。 今までは全オブジェクトの初期化をStart関数で実施していたため、ゲーム画面に遷移したらすぐにボールが出て始まっていました。 ただ、いきなり始まるのも何なので、特定のキーを押したらボールが出るようにします。 [BreakBlocksGame.cs] usin…

Unityで遊ぼう [ブロック崩し編 その4:プレハブ化+オブジェクト生成]

前回の続き。 今までは固定でオブジェクトを置いていましたが、これではそのパターン以外何も変化がありません。 ボール転がしゲームと同じように、各オブジェクトをプレハブ化して、起動時にオブジェクトを初期化して配置するようにします。 作ったオブジェ…

Unityで遊ぼう [ブロック崩し編 その3:ブロックの設定とビルド]

前回の続き。 プレイヤー用オブジェクトとボールの作成は終わったので、残るはブロックのみ。 ブロックは、ボールと衝突したら消えるようにすればよいので、単純ですね。 初期化やフレームごとのチェックではなく、衝突を検知した場合なので、 OnCollisionEn…

Unityで遊ぼう [ブロック崩し編 その2:摩擦・跳ね返り・移動制約・初速の設定]

前回の続き。 Rigidbodyを付けることで、物理運動が適用されるようになりますが・・・ そうなるともちろん、摩擦の影響も受け、スピードが落ちてしまいます。 ブロック崩しのボールは、止まってしまってはダメなので、そのあたりを回避する設定が必要です。 …

Unityで遊ぼう [ブロック崩し編 その1:オブジェクト準備]

以前、Unityを触ってみようということで、簡単なボール転がしのゲームや、ML-Agentsを用いた機械学習を作成してみました。 それからかなり期間が空いてしまい、またかなり忘れてしまいました(笑) 思い出しがてら何か作ってみようかなということで、ちょっ…

目標を持つこと

引き続き、OJT関連の日記。 coublood.hatenablog.com coublood.hatenablog.com 私の下に新人が入って早3か月。 正直、忙しかったこともあって、あっという間でした。 新人教育として、考えないといけないこととして、「どうやって教育していくか」というこ…

新人教育の難しさ

先月くらいからOJTで新人の教育・指導を行なっています。 私のプロジェクトではソフトウェア開発を行っているので、そのノウハウを教えて、実際に簡単な作業から順次割り振って実地研修ということを行なっていますが・・・ 難しいのは、やはり今までにソフト…

実践の重要性

社会人になり何年もやっていると大体やることになるのが「新人教育」。 私の所属している課にも新人が入り、私がその教育役(指導員)に任命されました。 実際、初めてではなくこれで実際には3回目くらいなので、それほど戸惑い自体はないですが、難しいの…

Pythonのお勉強 その7(matplotlib)

Pythonではデータをわかりやすく可視化(グラフを描画)をするライブラリも。 それが「matplotlib」だそうです。 早速使ってみました。 適当に配列を定義し、それを x軸と y軸の変数に設定すると、簡単にグラフを描画できます。これだけ簡単だと、普通にグラ…

Pythonのお勉強 その6(ファイル読み込み その2)

coublood.hatenablog.com Pandasのread_csv関数で、パラメータを何も指定しないと、1行目がヘッダとなってしまいます。今回の場合、1行目もデータ行という扱いなので、ヘッダ行がないとする必要がありました。 その際には、引数として、"header=None"を指定…

Pythonのお勉強 その5(ファイル読み込み)

Pythonでファイル読み込みのライブラリといえば、「Pandas(パンダス)」。 色々なファイルの読み込みができるようです。 今回の場合、 test.csv : CSVファイル (区切り文字が "," (カンマ)) ter2.tsv : TSVファイル(区切り文字が "\t" (タブ)) のファイ…

Pythonのお勉強 その4(numpy)

Pythonでやはり有用だと考えられるライブラリとして挙がるのが「numpy」。 Pythonの数値計算ライブラリです。 これを使えば、配列も使えて、配列の計算も簡単にできるので、かなりいいですね。 ■ numpyの主な関数 ■ 配列 numpy.array() → 配列を定義できる。…

Pythonのお勉強 その3(数値型)

Pythonで数値型といえば・・・ int型(整数型) float型(浮動小数点数型) ・・・です。 float型とint型を計算すると、その結果はfloat型。 ただ、浮動小数点同士の演算をすると・・・ やっぱりこうなりますよね。 …ということで解決法が何かあるかなと探し…

Pythonのお勉強 その2(文字列)

前回で起動したJupyter Nootbookを使用して、軽く確認。 coublood.hatenablog.com ちなみにその命令の実行は「Shift+Enter」。 Enterだと普通に改行されてしまいます。 (1) 文字列の結合 文字列は「'」(シングルクォーテーション)か「”」(ダブルクォーテ…

Pythonのお勉強 その1(Jupyter Notebook)

UnityのML-Agentsの機械学習の際に、Anaconda (Python) を入れました。 coublood.hatenablog.com よくよく考えたら、Pythonって、私、実は使ったことないんですよね。 なので、ちょっと触るがてら、Pythonのお勉強。 調べてみると、Jupyter Notebookというも…

Unityで遊ぼう その10 (ステージを自動生成 その2)

以前、ボール転がしゲームのステージ自動生成を適当に考えてみました。 coublood.hatenablog.com 具体的には、 フロアパネルを数パターン作成 フロアパネルごとに配置回数のループを作成 配置座標を乱数から取得して、その座標に配置 という流れでした。 た…

Unityで遊ぼう [機械学習編] その6 (機械学習の成果)

coublood.hatenablog.com ここからはひたすら学習結果の確認とフィードバック。 実際は報酬の与え方や割合が悪いと、学習が進みませんが、今回はうまくいきました。 最初はなかなか平均点が上がっていきませんし、上がったり下がったりの繰り返し。 Mean Rew…

Unityで遊ぼう [機械学習編] その5 (機械学習実行)

coublood.hatenablog.com AcademyとAgentの実装が完了したら、機械学習の実行です。 実際は、スクリプトが動くかどうかをテストが完了していることが前提です。 Anaconda Navigatorからプロンプトを立ち上げ、pythonスクリプトを実行。 mlagents-learn ./con…

Unityで遊ぼう [機械学習編] その4 (実装)

coublood.hatenablog.com 次はソースを実装。 作るのは、Academy継承クラスとAgent継承クラスです。 (1) Academy継承クラス Academyクラスを継承。 MLAgentをインポートして、Academyクラスを継承するようにすればOKです。 今回やりたいことに範囲では特にメ…

Unityで遊ぼう [機械学習編] その3 (オブジェクトの作成・配置)

coublood.hatenablog.com …ということで、いよいよ作成開始。 ■ オブジェクトの作成・配置 色合いとかは今回は適当です。(デフォルトのまま(笑))。そして名前も適当です。 作ったオブジェクトは4つのCube。 (1) Floor 他のオブジェクトのY座標が0にで…

Unityで遊ぼう [機械学習編] その2 (ML-Agentsの構造)

coublood.hatenablog.com 基本的な環境構築とサンプルでの動作確認は終わりましたので、何か簡単なものを作ってみるのが次のステップですかね。 サンプルの中に「Basic」というプロジェクトがあり、これを自分で作ってみようと思います。ソースから仕組みを…

Unityで遊ぼう [機械学習編] その1

Unityでちょっとやってみたかったのが、機械学習の実践。 unity3d.com 強化学習をUnityで行うのに必要なものは以下の2つです。 ML-Agents Anaconda (Python) ■ ML-Agents ML-Agents(Unity Machine Learning Agents)ツールキットはゲームやシミュレーショ…

Unityで遊ぼう その9 (オブジェクトの破棄)

その8からの続き。 ステージはできたところで、落ちた時のエラー処理、再スタート処理は必要ですね。 今度は、ボールの座標で判定するようにしてみました。 ■ スクリプト (C#) public GameObject BallPrefab; public bool boolBallFlag; //ボール状態判定フ…

Unityで遊ぼう その8 (ステージを自動生成)

coublood.hatenablog.com あるフロアの中に障害物を作るのはいいんですが、これを色々と壁や穴を作るとなるとかなり大変。特に穴なんて開けるのは…。 …でれば、そもそも全体のフロアを作って、その上に壁を作ったりするのではなく、小さいフロアのパーツを何…

Unityで遊ぼう その7 (Game Over判定)

coublood.hatenablog.com 前回、適当に球転がしのプロジェクトを作りましたが、よくよく考えれば、落ちたときのエラー処理って何もしていないな・・・とちょっと思いました。 エラー判定としては、ボールの座標が一定座標以下になったらエラーとする・・・今…

Unityで遊ぼう その6 (ボールを操作)

今までとはちょっと変えて、 ボールをキーで操作するというプロジェクトを作成してみました。 Unityで遊ぼう その6 ボールを操作するには、キーを決めてイベントを定義する必要がありますが、大体のキーが定義されているので、自由にやれちゃいますね。 doc…

Unityで遊ぼう その5 (スクリプト制御)

最初に作ったものであとやれそうなのは、文字の表示とかですかね。 …ということでカウンタ設置で文字表示を練習してみることに。 Hierarchyウインドウで [UI]>[Text] を選び、テキストオブジェクトを追加。 あとは前回のスクリプトにクラスを追加して、カウ…

Unityで遊ぼう その4 (イベント制御)

1つのボールが転がっていく例のオブジェクトですが・・・ coublood.hatenablog.com スクリプトを組んで、クリックするごとにボールが生成されるようにしてみました。 スクリプト自体はC#。 C#は何気に初めてですが、C++は仕事でもよく使っているので、それ…

Unityで遊ぼう その3 (Rigidbody)

coublood.hatenablog.com ここまでに使ってみた設定についての備忘録です。 結構隅々までいじってみると、かなり色々とできそうです。 実際に触ってみないと覚えられないですからね。 その中でもまず使いそうなのがRigidbodyですかね。 ■ Rigidbody (リジッ…