転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

【ゲーム開発記録⑥】UNITYではじめるC# 基礎編を勉強するぞ2

みなさん、こんにちわ。UUCH1です。
現在、「UNITYではじめるC# 基礎編」を読み進めています。

UnityではじめるC# 基礎編

UnityではじめるC# 基礎編

今回はChapter4からです。
Chapter4からは、Unityの仕組みについてのおおまかな説明から始まり、2D画像をスクリプトで動かすところまで一気に説明してくれます。
メモしておきたい内容がいくつかあったので、自分で調べたことも含めて以下につらつらと書いておきます。

定期イベント

Unityのシステムでは、シーン上のゲームオブジェクトに対してイベント関数を呼び出しています。初期化イベント(Startメソッド)、衝突判定時に呼び出されるイベント(OnCollisionEnter目メソッド)など。
その中でも、Updateメソッドが代表にある定期イベントには、FixedUpdateメソッド、LateUpdateメソッドがあります。

■FixedUpdate
Updateメソッドは1フレーム毎に呼ばれるが、FixedUpdateメソッドは固定間隔で呼ばれる。
具体的には、Edit / Project Settings / Time / Fixed Timestepで指定された間隔。
FixedUpdateメソッドには、RigidbodyクラスのAddForceメソッドなどの物理演算処理を書く。

■LateUpdate
すべての更新処理が完了したあとに、LateUpdateメソッドが呼ばれる。
Update関数で処理をしたものに対して、カメラを追従させる際などに使用。

Texture Type

2Dゲームの場合は、Texture TypeをSprite(2D and UI)に設定する。

■Spriteとは
2Dグラフィックスオブジェクト。Unityのマニュアルに、きれいにまとめられていました。
Unity - マニュアル: スプライト

また、Generate Mip Mapsにチェックが入っていると画像がぼやけてしまう原因になるので注意すること。

【ゲーム開発記録⑤】UNITYではじめるC# 基礎編を勉強するぞ1

みなさん、こんにちわ。UUCH1です。
タイトル通り、Kindleセールで購入した「UNITYではじめるC# 基礎編」を読み進めています。

UnityではじめるC# 基礎編

UnityではじめるC# 基礎編

Chapter2、Chapter3は、Unityというよりプログラミングの参考書という内容でした。
C#の文法の基礎、クラスやインスタンス、変数などについてざっと説明されていました。その中でも、自分が知らなかった内容をメモしていきます。

foreach文

配列変数と組み合わせて使うfor文。Javaの拡張for文的な使い方だと自分は認識しました。

int[] array = {-1, 2, 3, 4, 5};
foreach (int i in array) {
   Debug.Log(i); // -1 2 3 4 5が出力される
}

配列変数の並び変え

ソートメソッドが用意されていました。

int[] array = {-1, 5, 2, 4, 3};
Array.Sort(array); // -1 2 3 4 5と並び変え

Listクラス

配列より、自分はこっちを使うと思います。

List<int> list = new List<int>();
list.add(1);
list.add(2);

【ゲーム開発記録④】さっそくゲーム開発をサボる

みなさん、こんにちわ。UUCH1です。

前回のブログで、「社会人で平日なかなか時間が取れないけど、5分だけでもUnity触るぞー」

と宣言したにも関わらず、さっそくゲーム開発サボってしまっていました。。

uuc1h.hatenablog.jp

「継続」って、本当に難しい。。だからこそ、価値があるんだろうけど。
けど、自分はゲーム開発って楽しむためにやっているんだから、肩ひじはらずに

「やれるときに楽しんでやろうよ」

って、心持ちでやっていこうかなっと思いました。

あんまり「毎日やらなければ!」と思いながらやっていると、いざゲーム開発ができなかった日があったとき、「毎日やるって言ってたのに、昨日ゲーム開発できなったかった。俺なんか、ダメだ。。。」
ってな感じで気分が落ち込みそうなので。

さて、ただこのサボってた(充電してた)期間ですが、AmazonKindleでセールやってました。
そこで、以下2冊のUnity本を買いました。

 

UnityではじめるC# 基礎編

UnityではじめるC# 基礎編

 

2冊とも良本らしいので、じっくり勉強していきます。
勉強した内容は、随時ブログで報告していきますので。

最後まで読んでいただき、ありがとうございました。それでは!

 

【ゲーム開発記録③】さっそく開発時間の確保の危機にさらされる

みなさん、こんにちわ。UUC1Hです。
30歳を機に始めたゲーム開発。前回では、Unityの公式チュートリアルをやり終えて、より一層やる気に満ち溢れております。

だがしかし、社会人なら誰しもがあるであろう「平日で自分の時間を確保するむずかしさ」。僕は今日は0:00過ぎに帰宅しました。
そこから、ごはん食べてお風呂に入ってとなると、1:00を過ぎてます。明日も仕事は普通にあるので、この時間から開発をやるのはキツイ。

だがしかし、ここでやめてしまうとズルズルと開発から遠のいてしまうし、なかなか先に進まない。。5分でもいいから、毎日Unityに触っていきます。そして、今もUnityを開きながらブログ書いています。頑張れ、自分。頑張っている自分に酔ってもいいから、頑張るんだ自分。

さて、気持ちの問題はここらへんでおいておいて、今日から具体的にどう勉強していくか決めなければなりません。
公式チュートリアルもやり終えたことだし、Unityの書籍を買ったのでこの本を進めていくことにします。

 

Unity5 3D/2Dゲーム開発実践入門 作りながら覚えるスマートフォンゲーム開発

Unity5 3D/2Dゲーム開発実践入門 作りながら覚えるスマートフォンゲーム開発

 

 4種類のミニゲームの作り方が掲載されています。この本を進めると同時に、簡単なオリジナルゲームの開発にも着手していきます。

【ゲーム開発記録②】Unityの公式チュートリアルをやってみる

こんにちわ。UUC1Hです。

前回のブログでUnityを使ったゲーム開発を行うことを宣言しましたが、何から始めていいのやら。。
「こういう時は公式チュートリアル」ということで、Unityの公式チュートリアルである玉転がしを作りました。

tutorial.unity3d.jp

 

■学んだことのメモ

・オブジェクトに色をつけるには、色付けしたMaterialをオブジェクトに貼る

・静的オブジェクトの登録方法(パフォーマンスやビジュアルの向上)

・Rigidbodyコンポーネントで物理演算機能を追加できる

・キーボードからオブジェクトを動作させる方法

・カメラを動かす方法

 ・FPSの視点

 ・TPSの視点

・Prefabとは

・接触判定

 ・OnTriggerEnter:判定のみのTriggerとの接触判定

 ・OnCollisionEnter:物理的な反射を持つColliderとの接触判定

 ・タグで指定し、特定のオブジェクトに対してだけ削除処理を適用

 ・特定のタグを持つオブジェクトと衝突したら、シーンの再読み込み

Canvasオブジェクト、Textオブジェクトを使用したUI

 ・CanvasオブジェクトのUI Scale ModeはScale With Screen Sizeへ

 ・指定したタグのオブジェクトの数を取得し、Textオブジェクトへ表示する

 ・非アクティブオブジェクトをアクティブにすることで、ゲームクリアを表現

 

このチュートリアルでは、以上のことを学びました。

1時間程度で終えれるチュートリアルですが、ボールをキーボードから操作し、ポイントをUIに表示し、ゲームクリア、ゲームオーバーと、ゲームとして成立する最低限の機能をつけることができました。
これは楽しい!!

そして、今後課題になってくるのが、開発時間の確保です。
平日はもちろん仕事し、帰ってくる時間はだいたい22時ごろ。。続けることを目標とし、以下のルールを自分に課したいと思います。

・1日の勉強時間は、最低5分(必ずUnityを起動させること)
・平日は、本やサイトのチュートリアルでインプットに努める。(変に悩んで時間を持っていかれないように)
・インプットの内容はブログに書くが、そこまで細かく書かない。(何を学んだか分かるメモ程度で)
・ゲーム開発を楽しんでやること!(ゲーム開発は子供のころからの夢だったんだよ)

さ、明日からは何を作ろうかな!

 

【ゲーム開発記録①】ゲームを作りたい

こんにちわ。
ブログを始めたのに、すっかりサボりまくっていたUUC1Hです。
初めましての方がほとんどかと思いますので、少し自分の話をしたいと思います。

僕は今、SEを職業としています。しかし、情報系の学校などは出ておらず、20代はITとは無縁の仕事をしていました。しかし、色々あって30歳でSEという職業にたどり着きました。

SEを選んだ理由は単純で、「ものを作る」仕事がしたかったからです。それに、「プログラミングって何かかっこいい!!」っていう憧れもありました。
が、いざ蓋をあけてみるとプログラムを書くどころか、プログラムを見ることもできない環境でずっとExcelを触る日々。。テストをやったり、ドキュメントを作る毎日でした。30歳で未経験であれば、当然なのですが。。

 

そこで、「仕事でプログラマを書けないんだったら、自分で書こう。どうせなら楽しい方がいいから、ゲームを作ろう!!」という考えに至った今日であります。

 

そして、まず着手したのがJavaで作ったシューティングゲーム。以下の本の通りにまずやってみました。

15歳からはじめるJAVAわくわくゲームプログラミング教室 フルカラー最新版【Windows & Mac両対応】

15歳からはじめるJAVAわくわくゲームプログラミング教室 フルカラー最新版【Windows & Mac両対応】

 

 何故Javaなのかというと、今の会社の研修でJavaを習ったからという単純な理由です。
この本の通りにすると、いわゆるシューティングゲームができるのですが、自分にとってはすごい難しい。。この本で得た知識で、いざ自分のオリジナルゲームを作ろうと思うと、かなりの時間と労力を使うのは目に見えてるし、飽きっぽい自分には無理だなと感じました。
ただ、自分が書いたプログラムが、ゲームとして動いてくれるのはやっぱり嬉しいです。素直に、楽しい!!って思えましたね。

次に考えたのが、ゲームエンジンのUnityを使っての開発です。言語はC#で触ったことは無いんですが、後々の役に立つし、これを機にUnityと一緒に勉強していこうと思います。
ただ、闇雲に作っていってもモチベーションを保つのが難しいのでiOSアプリとしてリリースすることを当初の目標にします。そこまで作りこまずに、まず「リリース」することを第1目標とします。

本ブログでは、自分の備忘録をかねて日々の開発状況を記録していきます。
果たして、30歳からゲーム作りを始めて、本当にリリースできるのか?

自分でも結果が楽しみです。

 

【Java】文字と文字列の変換に関するメモ

Stringからcharの配列に変換

String str = "abc";
char[] array = str.toCharArray();


StringBuilderからcharの配列に変換

StringBuilder sb = new StringBuilder("abc");
char[] array = new char[sb.length()];
sb.getChars(0, array.length, array, 0);


charの配列からStringオブジェクトを生成

char[] array = {'a','b','c'};
String str = new String(array);


charの配列からStringBuilderを生成

char[] array = {'a','b','c'};
StringBuilder sb = new StringBuilder();
sb.append(array);