にゃんたのUnityゲーム開発覚え書き

Unityのゲーム開発についてあれやこれや書いていきます。

Unityちゃんを活用したゲーム② - 企画から実際に製造するための考察について

企画から実際に製造するための考察について

f:id:sirosiro346:20170923203013j:plain

前回、ゲームの案を考えたので、今日は実際に製造を行うための考察と、実際に製造を始めていこうと思います。
前回の記事はこちら↓
a-zero.hatenablog.com

必要な機能の洗い出し

まずは、ゲーム開発に必要な要素洗い出してみた。

f:id:sirosiro346:20170920153508p:plain

  1. iPhoneでアプリの実行
  2. オブジェクトへ移動する処理
  3. 敵を攻撃する処理
  4. 防御する処理
  5. ダメージ時の処理
  6. 制限時間表示
  7. ゲームの進行度表示
  8. ゲームっぽさの追求 (音声とか、時間の初期値とか、ステージの難しさとか)


思いつく限りで書いてみたので、やってたら抜け漏れとか出てきそうだけど一旦こんな感じ。

iPhoneでアプリ実行

とりあえず、Unityで「Build & Run」を実行してみた。
f:id:sirosiro346:20170923210409p:plain

なにやらXcodeでBuild実行時にエラーが

xcode No code signing identities found: No valid signing identities (i.e. certificate and private key pair) were found.

Webで検索してみたらこんな記事が
blog.e2info.co.jp

さらに調べていくと、Unity上のPlayer SettingsのOther Settingsにある
Bundle Identiferが悪さをしていることが判明!

ここには、実機で動かすAppleIDを入れなきゃあかんらしい。
自分の端末以外で動かす場合どうするんや・・・といった疑問は残るものの、とりあえずAppleIDにして実行してみた!

youtu.be

縦向きじゃん!!!!!

ということで、横向きにする方法を調べてみると、こんなサイトが。
www.clrmemory.com

ふむふむ。
UnityのPlayer Settings のResolution and Presentationの「Allowed Orientations for Auto Rotation」「Landscape Left と Landscape Right」変えれば良いってことね!
f:id:sirosiro346:20170923211853p:plain


再び実行!!

youtu.be


横になった!!(まだなんにも実装してないけどw)

今日ほんとビルド関連しかしてないけど、なんだか達成感ある。
さて、次回以降は「オブジェクトへ移動する処理」から進めていこうと思います。

現在の進捗

  1. iPhoneでアプリの実行 (2017/09/23 完了)
  2. オブジェクトへ移動する処理
  3. 敵を攻撃する処理
  4. 防御する処理
  5. ダメージ時の処理
  6. 制限時間表示
  7. ゲームの進行度表示
  8. ゲームっぽさの追求 (音声とか、時間の初期値とか、ステージの難しさとか)

Unityちゃんを活用したゲーム① - 企画編

Unityちゃんで作るゲームを考えてみた

こんにちは。siroです。

前回まででUnityちゃんを動かすところまできたんですが、

探り探り作っている感じがあるので、作りたいゲームの案を考えてみました!

前回の記事は以下

a-zero.hatenablog.com

 

縦スクロールかなーどうかなー

昨日の時点では縦スクロールになるのかなーとやんわり考えていたんだけど、

横スクロールの方が馴染みがあるので横スクロールのゲームにしようと思います!

 

早速パワポで簡単に構想案作ってみた。

※たぶん、今の自分の実力ならかなり涙目状態なので、ここから更に機能を分割していく流れになると思う。タイトルはテキトーに決めたから後から変わりそう。

 

f:id:sirosiro346:20170920153508p:plain

f:id:sirosiro346:20170920153514p:plain

f:id:sirosiro346:20170920153523p:plain

f:id:sirosiro346:20170920153530p:plain

f:id:sirosiro346:20170920153537p:plain

 

簡単に言うと、

ジャンプでブロックを制限時間内にゴールを目指すゲーム

です。

途中敵が出てくるからそれを倒しつつ進む感じですね。

 

一旦イメージだけ作ってみた。

f:id:sirosiro346:20170920153957p:plain

 

 Unityの素のプロジェクトからつくったからか、本当にゲームとして成り立つのか不安になるような図ですねw

 

構想はある程度できたので、これから作っていこうと思いますー!

 

ノシ

 

Unityちゃんを自作したAnimetorで動かしてみよう

Unityちゃんを指定のタイミングで動かそう

こんばんわ。siroです。

昨日Unityちゃんを走らせるところまでやったんですが、

もともとあるAnimetorを使って最初に表示するアニメーションを変更しただけだったので、今回はAnimetorを作ってみようと思います。

いけたら、スクリプトから任意のアニメーションを実行するところまでいけたらと思います。

※前回の記事は以下です

a-zero.hatenablog.com

 

まずはUnityちゃんを走らせよう

まずは、Animetorを作りたいフォルダで右クリックして「Animetor Controller」を選択します。

f:id:sirosiro346:20170919231520p:plain

 

AnimetorウィンドウをWindowsタブから開いて、右クリックしてEmptyのコンポーネントを置く。

f:id:sirosiro346:20170919231552p:plain

f:id:sirosiro346:20170919231606p:plain

 

コンポーネントを作ると、最初に実行されるAnimetorとして設定されるので、

名前を変更してアニメーションを指定する。

f:id:sirosiro346:20170919231624p:plain

f:id:sirosiro346:20170919231958p:plain

 

AnimetorをUnityちゃんにドラッグアンドドロップして走ることを確認!

f:id:sirosiro346:20170919232043p:plain

 

UnityちゃんがジャンプするAnimetorを用意しよう。

さきほど作成したAnimetorにさらにCreate Emptyしてコンポーネントを置き、名前をJumpに変更。

その後、RunningからJumpに相互で遷移するために、右クリックしてMake Transitionを選択して相互に矢印をしておく。

f:id:sirosiro346:20170919232302p:plain

 

ここからが本題。スクリプトで実行するための準備をしよう

状態を遷移するための矢印だけはつなぎましたが、条件などなにも指定していない状態なので、条件を設定する必要があります。

 

具体的には、

①Animetor上にBool値によって状態が遷移するように設定

スクリプト上で指定の条件のときにBool値をTrueもしくはFalseにする処理実装

この二つが必要です。

 

①Animetor上にBool値によって状態が遷移するように設定

これは、Parameterタブで設定します。

ここにBool値で変数追加し、状態遷移の矢印を選択して設定していきます。

※ここではRunningからJumpに遷移する条件を、parameterの「jump」がtrueだったとき

 としています。同様に逆パターンもparameterが「running」のときとして用意しておく

f:id:sirosiro346:20170919233530p:plain

 

スクリプト上で指定の条件のときにBool値をTrueもしくはFalseにする処理実装

とっても簡単です。

animator.SetBool ("jump", true)

これだけ。

 

あとは、Updateメソッドはフレームごとに毎回実行されちゃうんで、アニメーションが終わるまでアニメーションを継続する必要があるのでそれも書いてます。

// Animetorの状態を取得
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);

 // Jumpのアニメーションを終了判定し、falseに変更
 if( stateInfo.IsName("Base.Jump") && stateInfo.normalizedTime >= 0.4f ) {
            Debug.Log("BaseレイヤーのJumpを実行完了");
            animator.SetBool("jump", false);
 }

 

こんな感じでいけます。

Baseという名前のJumpが実行中かつ、実行時間が0.4以上の場合のみジャンプ完了

としています。

 

あとは、横移動と縦移動ができるように処理加えて一旦完了

全文はこんな感じ

---------------------------------------------------------------------------------------------------

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

public class UnityChanAnimetorScript : MonoBehaviour {

    private Animator animator;
    private float dx;
    private float dz;
    // Use this for initialization
    void Start () {
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update () {

        // Animetorの状態を取得
        AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);

        // Jumpのアニメーションを終了判定し、falseに変更
        if( stateInfo.IsName("Base.Jump") && stateInfo.normalizedTime >= 0.4f ) {
            Debug.Log("BaseレイヤーのJumpを実行完了");
            animator.SetBool("jump", false);
        }

        // 矢印キーの値に応じてUnityちゃんを移動
        if (Input.GetButton ("Jump")) {
            animator.SetBool ("jump", true);
        } 
        else if (Input.GetAxis ("Vertical") != 0 || Input.GetAxis ("Horizontal") != 0) { 
            dx = Input.GetAxis ("Horizontal");
            dz = Input.GetAxis ("Vertical");
            transform.Translate (dx * 0.2f, 0, dz * 0.2f);
        }

    }
}

---------------------------------------------------------------------------------------------------

 

そして動かしてみたらこんな感じになりましたとさ。

youtu.be

 

本日学んだこと

  1. Animetorに遷移の変数、条件を持たすことができる
  2. Animetorの変数の値はスクリプトから変更可能。これを利用して遷移を行う。

 

あんまり進まなかったですが、とりあえず動かせたので良しとします。

アニメーションの終了判定とかもっと良い方法ありそうだけど・・・

 

 

なんとなく次のアプリが見えてきた

ここまでやってみて、なんとなく次のアプリをどういうものにするか見えてきた。

とりあえず「縦スクロールの障害物回避アプリ」にしようと思います。

 

そんなところでー!

ではではノシ

 

 

 

Unityちゃんの正しいインポート方法

 

Unityちゃんの正しいインポート方法について

悲報。Unityちゃんがピンクレンジャーに・・・

こんばんわ。siroです。

昨日UnityちゃんをAssetStoreでインポートして動かすところまでやりましたが、

Unity最新版(Unity 2017.1)だと再度ファイルを開いたときに、Unityちゃんがピンクに!!!!笑

f:id:sirosiro346:20170918230821p:plain

 

Unityにおけるオブジェクトピンク現象ですが、

 ・テクスチャが外れた
 ・シェーダーが対応していない

など、何らかの理由で「テクスチャの描画が出来ない」と、

このようなピンク色になるようです。

 

原因と対策

特にいじった記憶がないので、Unity公式サイトにて確認したところ、

シェーダー周りでパッチが出ている模様。

めんどくさいのでUnityちゃんも出ている最新のものをダウンロードしてインポートすることに。

ユニティちゃんシェーダー (Unity 5.4/5.5β 対応版) - ダウンロード - UNITY-CHAN! OFFICIAL WEBSITE

 

帰ってきたUnityちゃん

そんなこんなでインポートしたUnityちゃんのプレハブを、Cubeオブジェクトで作ったステージの上に置いて実行してみた。

f:id:sirosiro346:20170918231615p:plain

なにやらポージングしてますね。笑

 

これは、デフォルトで設定してあるアニメーションがポーズを確認するアニメーションになっているためです。

そのため、本来はアニメーションを自分で作る必要がありますが、一旦動きのあるアニメーションに変更、そして再実行。

f:id:sirosiro346:20170918231824p:plain

f:id:sirosiro346:20170918231539p:plain

 

なにやら嬉しそうにUnityちゃんがジャンプしています。笑

 

移動系のゲーム作るし、とりあえず走らせてみるか

一旦走らせてみようと思います。

動きを司る機能にAnimetorがあるので、一旦そのウィンドウを開きます。

f:id:sirosiro346:20170918232024p:plain

 

Animetorを開くと、なにやら四角いものがいっぱい表示されます。

それぞれ実行されると特定の動きをするようコンポーネントを設定しており、

Unityちゃんの場合はNextやBackを押下するとアニメーションが遷移するようになっているようです。

 

ここで注意するところが、色のついたコンポーネントです。

f:id:sirosiro346:20170918232630p:plain

 

緑がスタート、赤色が終了処理なのですが、緑色の「Entry」からオレンジ色のコンポーネントに矢印が出ていることがわかります。

これは、最初に実行するアニメーションはオレンジ色のコンポーネントですよ。といったことを表しており、これを変更することで。ジャンプではなく走るようにすることができます。

 

右クリック後、「Set as Layer Default State」を選択します。

f:id:sirosiro346:20170918232758p:plain

f:id:sirosiro346:20170918232344p:plain

 

走るUnityちゃん!!

実行するとこんな感じに動きました。

youtu.be

 

ただただ走っているだけですが、こんな感じで動きを設定することができます。

今回はUnityちゃんのAssetに含まれているAnimetorコントロールを使いましたが、次回は自分でAnimetorを作って、スクリプトから動かしてみたいと思います!

 

今回覚えたこと

今回は以下のようなことを学びました。

  • Unityちゃんを使うときは、公式サイトからダウンロードした最新のものを利用しよう
  • Unityでオブジェクトがピンクになった場合はシェーダー周りを疑え!
  • Animetorはオブジェクトのアニメーションを設定しておくことが可能。
  • Animetor上で最初に実行されるアニメーションは、右クリック「Set as Layer Default State」で変更可能

 

明日は面談もありますが、Unity開発も頑張りますー!

ではではノシ

Unityちゃんシンプルゲーム開発 - ①

 

Unityちゃんでゲーム作るぞ

さて、前回まででブロック崩しのゲームができたので、いよいよ3Dっぽいゲーム作ってみようと思います。

構想案は今練っている最中なんだけど、素材としては無料のUnityちゃんを使うことにしました。

この子です。

f:id:sirosiro346:20170918000347p:plain

 

AssetStoreとは?

Unityの便利なところの一つに、AssetStoreという素材のマーケットを利用できる点があります。

無料のものもあるため、ここにある素材を利用してゲーム開発ができるので、専任のデザイナーとかがいない場合に少しリッチなゲーム作るときは利用したほうが良い感じ。

3Dのモデルとしては、キャラのモデルや建物などもあります。

※UnityのWindowにあります。

f:id:sirosiro346:20170918001055p:plain

 

 

さっそくUnityちゃんをインストールしてみた

さっそくですが、UnityちゃんをインストールしてサンプルのSceneを動かしてみました。

youtu.be

無料なのによくできてるよなー笑

 

今回はこの子を題材にいろいろやってみようと思っています。

今考えているのは鬼ごっこか、敵を打って倒すゲームですかね。

 

まだ二つ目だから難易度低めにして、ビーチフラッグとかでも良いかもしれない。

少し考えてみます。

 

そんなところでしたーノシ