ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

Unityのレンダリング画像をファイルに出力

作成中のゲームのキャラクター画像をUnityで作成することにした。
kan-kikuchi.hatenablog.com
まず、この記事を参考にUnityのカメラ映像をRenderTextureを使って画像として取得できるようにした。
このときLayerを使ってキャラクターだけ取り出し、背景は透明になるようにした。
psychic-vr-lab.com
次のこの記事を参考にRenderTextureの画像をPNGファイルとして出力した。
プログラムをちょっと変更して、アルファ付きの画像を連番でファイル出力するようにした。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;

public class SaveRenderTextureToPng : MonoBehaviour
{
    public RenderTexture RenderTextureRef;
    private int index = 0;

    void Start() { }

    void Update()
    {
        savePng(index++);
    }

    void savePng(int index)
    {
        Texture2D tex = new Texture2D(RenderTextureRef.width, RenderTextureRef.height, TextureFormat.RGBA32, false);
        RenderTexture.active = RenderTextureRef;
        tex.ReadPixels(new Rect(0, 0, RenderTextureRef.width, RenderTextureRef.height), 0, 0);
        tex.Apply();

        // Encode texture into PNG
        byte[] bytes = tex.EncodeToPNG();
        Object.Destroy(tex);

        //Write to a file in the project folder
        File.WriteAllBytes(Application.dataPath + "/../SavedScreen_"+index.ToString()+".png", bytes);
    }
}

これでキャラクターの画像ファイルを作成することができた。

チュートリアル本読了

チュートリアル本を読み終わった。
Pythonのゲーム開発ライブラリPyGameを使ったもので、いくつかの機能が分かった。
これならば、Unityで作ったうさぎのジャンプゲーは作れそうだ。
あちらはモデルは3Dだけど、今回は2Dで作るので、アセットを準備しないと。
この前のをキャプチャして使うというのもありかも。

Visual Studio Codeの拡張機能

qiita.com
開発環境の構築で、Visual Studio Code拡張機能をこの記事を見ながらインストール。
3分の1くらいはすでにインストール済みだった。
さらにGitHubリポジトリを作り、エディタ上でファイルを変更、コミット、プッシュを試した。
ほぼ設定していなくても簡単に出来た。変更箇所も分かりやすく、非常に使いやすい。
なんでもっと早くから使わなかったんだろうというくらい。

環境構築

Pythonでの開発環境を構築。
今回はVisual Studio Codeで行うことに。
すでにPython拡張機能はインストール済みなので、すぐにデバッグ実行出来るかと思ったら、
モジュールが見つからないというエラーになってしまった。すでにモジュールもインストール済みなのに。
と思って調べてみたところ、複数のバージョンがインストールされている場合は切り替えることが出来るようになっており、
選ばれていたのはモジュールが入っていないバージョンだった。ということでインストール済みのモジュールに切り替えて実行できるようになった。
次はVisual Studio CodeGitHubを連携する部分をやってみる予定。

今週の予定

日曜日は今週作るものを決める日。
Unity,Unrealミニゲームを作ってきたので、今度はPythonで作る予定。
Pythonでゲームを作るチュートリアル本があるので、それを見ながら色々試してみる。
基本的にはアクションかパズルかなと考えているけど、具体的にどんなゲームにするかは未定。
ゴールとしては単体で起動でき、タイトル画面、ゲームプレイ、ゲームオーバー画面と一連の流れがあるもの。
アセットはフリー素材を使う。時間的に余裕があれば自分で作る部分も少しは入れたいところ。
実際に作業する時間を測り、だらだらやり続けない。タイムマネジメントも目的の一つとする。

JumpPad


今週の成果物はUnreal Engineで作ったミニゲーム
アンリアルクエスト4にあったジャンプパッドを見ていたら、プチコンにこういう感じのゲームがあったことを思い出して作ってみた。元のゲームは検索してみたけど見つからなかったので、実際にはどういうものだったのかは今となっては正確には分からない。
タイトル画面、ゲームプレイ、ゲームオーバー画面と一連の流れは入れた。動画には入っていないけど、SEやBGMも付けた。
最終的にはパッケージ化して単体で動くようにしたかったのだが、パッケージ化してもタイトル画面のレベルからゲームプレイのレベルに正しく遷移できなかった。
いろいろなアセットが含まれているのがまずいのかと思い、新規でプロジェクトを作り、そこに使っているアセットを移行しようとした。
しかし、プレイヤーキャラクターを移行しようとするとエディターが落ちてしまうという状態に。原因は分からないが、5.0で作成したプロジェクトを5.1で開いてコンバートしたのが良くなかったのかもしれない。
とりあえず、これでUnityに続いてUnreal Engineでもミニゲームを作った。
さて次は何を作ろうか。