Unityちゃんを活用したゲーム② - 企画から実際に製造するための考察について
企画から実際に製造するための考察について
前回、ゲームの案を考えたので、今日は実際に製造を行うための考察と、実際に製造を始めていこうと思います。
前回の記事はこちら↓
a-zero.hatenablog.com
必要な機能の洗い出し
まずは、ゲーム開発に必要な要素洗い出してみた。
- iPhoneでアプリの実行
- オブジェクトへ移動する処理
- 敵を攻撃する処理
- 防御する処理
- ダメージ時の処理
- 制限時間表示
- ゲームの進行度表示
- ゲームっぽさの追求 (音声とか、時間の初期値とか、ステージの難しさとか)
思いつく限りで書いてみたので、やってたら抜け漏れとか出てきそうだけど一旦こんな感じ。
iPhoneでアプリ実行
とりあえず、Unityで「Build & Run」を実行してみた。
なにやら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にして実行してみた!
縦向きじゃん!!!!!
ということで、横向きにする方法を調べてみると、こんなサイトが。
www.clrmemory.com
ふむふむ。
UnityのPlayer Settings のResolution and Presentationの「Allowed Orientations for Auto Rotation」を「Landscape Left と Landscape Right」変えれば良いってことね!
再び実行!!
横になった!!(まだなんにも実装してないけどw)
今日ほんとビルド関連しかしてないけど、なんだか達成感ある。
さて、次回以降は「オブジェクトへ移動する処理」から進めていこうと思います。
現在の進捗
iPhoneでアプリの実行(2017/09/23 完了)- オブジェクトへ移動する処理
- 敵を攻撃する処理
- 防御する処理
- ダメージ時の処理
- 制限時間表示
- ゲームの進行度表示
- ゲームっぽさの追求 (音声とか、時間の初期値とか、ステージの難しさとか)
Unityちゃんを活用したゲーム① - 企画編
Unityちゃんで作るゲームを考えてみた
こんにちは。siroです。
前回まででUnityちゃんを動かすところまできたんですが、
探り探り作っている感じがあるので、作りたいゲームの案を考えてみました!
前回の記事は以下
縦スクロールかなーどうかなー
昨日の時点では縦スクロールになるのかなーとやんわり考えていたんだけど、
横スクロールの方が馴染みがあるので横スクロールのゲームにしようと思います!
早速パワポで簡単に構想案作ってみた。
※たぶん、今の自分の実力ならかなり涙目状態なので、ここから更に機能を分割していく流れになると思う。タイトルはテキトーに決めたから後から変わりそう。
簡単に言うと、
ジャンプでブロックを制限時間内にゴールを目指すゲーム
です。
途中敵が出てくるからそれを倒しつつ進む感じですね。
一旦イメージだけ作ってみた。
Unityの素のプロジェクトからつくったからか、本当にゲームとして成り立つのか不安になるような図ですねw
構想はある程度できたので、これから作っていこうと思いますー!
ノシ
Unityちゃんを自作したAnimetorで動かしてみよう
Unityちゃんを指定のタイミングで動かそう
こんばんわ。siroです。
昨日Unityちゃんを走らせるところまでやったんですが、
もともとあるAnimetorを使って最初に表示するアニメーションを変更しただけだったので、今回はAnimetorを作ってみようと思います。
いけたら、スクリプトから任意のアニメーションを実行するところまでいけたらと思います。
※前回の記事は以下です
まずはUnityちゃんを走らせよう
まずは、Animetorを作りたいフォルダで右クリックして「Animetor Controller」を選択します。
AnimetorウィンドウをWindowsタブから開いて、右クリックしてEmptyのコンポーネントを置く。
コンポーネントを作ると、最初に実行されるAnimetorとして設定されるので、
名前を変更してアニメーションを指定する。
AnimetorをUnityちゃんにドラッグアンドドロップして走ることを確認!
UnityちゃんがジャンプするAnimetorを用意しよう。
さきほど作成したAnimetorにさらにCreate Emptyしてコンポーネントを置き、名前をJumpに変更。
その後、RunningからJumpに相互で遷移するために、右クリックしてMake Transitionを選択して相互に矢印をしておく。
ここからが本題。スクリプトで実行するための準備をしよう
状態を遷移するための矢印だけはつなぎましたが、条件などなにも指定していない状態なので、条件を設定する必要があります。
具体的には、
①Animetor上にBool値によって状態が遷移するように設定
②スクリプト上で指定の条件のときにBool値をTrueもしくはFalseにする処理実装
この二つが必要です。
①Animetor上にBool値によって状態が遷移するように設定
これは、Parameterタブで設定します。
ここにBool値で変数追加し、状態遷移の矢印を選択して設定していきます。
※ここではRunningからJumpに遷移する条件を、parameterの「jump」がtrueだったとき
としています。同様に逆パターンもparameterが「running」のときとして用意しておく
②スクリプト上で指定の条件のときに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);
}
}
}
---------------------------------------------------------------------------------------------------
そして動かしてみたらこんな感じになりましたとさ。
本日学んだこと
- Animetorに遷移の変数、条件を持たすことができる
- Animetorの変数の値はスクリプトから変更可能。これを利用して遷移を行う。
あんまり進まなかったですが、とりあえず動かせたので良しとします。
アニメーションの終了判定とかもっと良い方法ありそうだけど・・・
なんとなく次のアプリが見えてきた
ここまでやってみて、なんとなく次のアプリをどういうものにするか見えてきた。
とりあえず「縦スクロールの障害物回避アプリ」にしようと思います。
そんなところでー!
ではではノシ
Unityちゃんの正しいインポート方法
Unityちゃんの正しいインポート方法について
悲報。Unityちゃんがピンクレンジャーに・・・
こんばんわ。siroです。
昨日UnityちゃんをAssetStoreでインポートして動かすところまでやりましたが、
Unity最新版(Unity 2017.1)だと再度ファイルを開いたときに、Unityちゃんがピンクに!!!!笑
Unityにおけるオブジェクトピンク現象ですが、
・テクスチャが外れた
・シェーダーが対応していない
など、何らかの理由で「テクスチャの描画が出来ない」と、
このようなピンク色になるようです。
原因と対策
特にいじった記憶がないので、Unity公式サイトにて確認したところ、
シェーダー周りでパッチが出ている模様。
めんどくさいのでUnityちゃんも出ている最新のものをダウンロードしてインポートすることに。
ユニティちゃんシェーダー (Unity 5.4/5.5β 対応版) - ダウンロード - UNITY-CHAN! OFFICIAL WEBSITE
帰ってきたUnityちゃん
そんなこんなでインポートしたUnityちゃんのプレハブを、Cubeオブジェクトで作ったステージの上に置いて実行してみた。
なにやらポージングしてますね。笑
これは、デフォルトで設定してあるアニメーションがポーズを確認するアニメーションになっているためです。
そのため、本来はアニメーションを自分で作る必要がありますが、一旦動きのあるアニメーションに変更、そして再実行。
なにやら嬉しそうにUnityちゃんがジャンプしています。笑
移動系のゲーム作るし、とりあえず走らせてみるか
一旦走らせてみようと思います。
動きを司る機能にAnimetorがあるので、一旦そのウィンドウを開きます。
Animetorを開くと、なにやら四角いものがいっぱい表示されます。
それぞれ実行されると特定の動きをするようコンポーネントを設定しており、
Unityちゃんの場合はNextやBackを押下するとアニメーションが遷移するようになっているようです。
ここで注意するところが、色のついたコンポーネントです。
緑がスタート、赤色が終了処理なのですが、緑色の「Entry」からオレンジ色のコンポーネントに矢印が出ていることがわかります。
これは、最初に実行するアニメーションはオレンジ色のコンポーネントですよ。といったことを表しており、これを変更することで。ジャンプではなく走るようにすることができます。
右クリック後、「Set as Layer Default State」を選択します。
走るUnityちゃん!!
実行するとこんな感じに動きました。
ただただ走っているだけですが、こんな感じで動きを設定することができます。
今回はUnityちゃんのAssetに含まれているAnimetorコントロールを使いましたが、次回は自分でAnimetorを作って、スクリプトから動かしてみたいと思います!
今回覚えたこと
今回は以下のようなことを学びました。
- Unityちゃんを使うときは、公式サイトからダウンロードした最新のものを利用しよう
- Unityでオブジェクトがピンクになった場合はシェーダー周りを疑え!
- Animetorはオブジェクトのアニメーションを設定しておくことが可能。
- Animetor上で最初に実行されるアニメーションは、右クリック「Set as Layer Default State」で変更可能
明日は面談もありますが、Unity開発も頑張りますー!
ではではノシ
Unityちゃんシンプルゲーム開発 - ①
Unityちゃんでゲーム作るぞ
さて、前回まででブロック崩しのゲームができたので、いよいよ3Dっぽいゲーム作ってみようと思います。
構想案は今練っている最中なんだけど、素材としては無料のUnityちゃんを使うことにしました。
この子です。
AssetStoreとは?
Unityの便利なところの一つに、AssetStoreという素材のマーケットを利用できる点があります。
無料のものもあるため、ここにある素材を利用してゲーム開発ができるので、専任のデザイナーとかがいない場合に少しリッチなゲーム作るときは利用したほうが良い感じ。
3Dのモデルとしては、キャラのモデルや建物などもあります。
※UnityのWindowにあります。
さっそくUnityちゃんをインストールしてみた
さっそくですが、UnityちゃんをインストールしてサンプルのSceneを動かしてみました。
無料なのによくできてるよなー笑
今回はこの子を題材にいろいろやってみようと思っています。
今考えているのは鬼ごっこか、敵を打って倒すゲームですかね。
まだ二つ目だから難易度低めにして、ビーチフラッグとかでも良いかもしれない。
少し考えてみます。
そんなところでしたーノシ