2021年3月30日火曜日

エラーで困った

 

エラー

  あいかわらず普通に再生しても音がするのに、ビルドすると音が出ないのですが、

ふと、コンソールに何か出ていることに気がつきました。

 ビルド設定にして、プレイヤーを開いた時に出るようです。

 .android\repositories.cfg could not be loaded.

  検索しても英語しか出てこず、翻訳してもらってみると、どうやら、

 ーー以下引用ーー

C:\ Users \ USERNAME \ .androidフォルダーに移動し、以下の手順に従います。

  1. 右クリック> repositories.txtという名前の新しいtxtファイルを作成します
  2. ファイルを開き、[ファイル]> [名前を付けて保存]に移動します。> [ファイルの種類]を選択します:すべてのファイル
  3. repositories.txtの名前をに変更します repositories.cfg

 ーー以上引用ーー

 ということでしたので、書かれていたとおりにしたら、とりあえず、エラー表示は消えました。 

 まだまだ問題はありそうですが、わずかずつ進んでいるようです。

 ビルドしたときに音が出ない問題は、Unityのバージョンによって、WebGLビルドの時に出ることがあったエラーとのことですが、アンドロイドビルドなのにSEだけ音が出なくて、原因が良くわかりません。

 

 

2021年3月29日月曜日

あれを足して、これも足して

 

思いついたことを足していく

 モグラの数を増やしたり、ランダムで出るようにしたり、重なることがあるので、出る場所を調整したり、途中でエラーの連続にあったり、スコアがうまく出なくなったり、とにかくいろいろ壁にぶつかりながら、進めていきました。

 思いついただけ、できそうなことを追加していって、なんとか形にしたい。

 

音楽がまた、壁

 


 BGMと、SEをつけたくて、 サウンドマネージャーをスタティックで作るというのをやってみたのですが、音楽を流す関数を呼び出しても音が出なかったり。

 どうやら、Playのところに何度もループが行っていて、それで音が消えてしまったらしいとわかり、PlayOneShotに変更したら出るようになった。

 PlayとPlayOneShotの違い、重要

 しかし、その後も、音で壁にぶつかっています。

 普通に再生すると思ったとおりに音がするのに、ビルドして試してみると消えてしまう。

 何でだろう?


突然、音が出なくなった

 普通に再生すると音が出ているのに、ビルドすると音が出ていない。

 BGMのほうだけは聞こえているのだが、SEの音が出なくなった。

2021年3月28日日曜日

ようやくつかめたコンポーネント

 

オブジェクトがつかめない

 とにかく、形にしていこうと、ボタンの数を増やすと、区別がつかなくなり、

 GetComponent  というので、ボタンというゲームオブジェクトをゲットしようとしたけれど、うまくいかず。

 あれこれ読んだり試行錯誤しているうちに、しだいに、オブジェクトとかコンポーネントというもののイメージが固まってきました。

 ようやくつかめた

 


 あくまでも、初心者の考えた直感的イメージですが。

 オブジェクトは、いわば幽霊です。

 たとえば、オブジェクトがあるとして、

 それにコンポーネントがくっついて会社みたいなものになっている。

  スクリプトが、

 絵師(キャンバスレンダラー)aが、A社の社員であることを宣言→絵師aが描いたコンポーネントの絵が、A社のいうオブジェクトの画像イメージになる。

 重量決定者(コライダー)aが、A社の社員であることを宣言→重量決定者aが決めた重さがA社のいうオブジェクトの重さになる。

 などなど。

 

 

  また、スクリプトが、

 絵師(キャンバスレンダラー)bが、B社の社員であることを宣言→絵師bが描いたコンポーネントの絵が、B社のいうオブジェクトの画像イメージになる。

 重量決定者(コライダー)bが、B社の社員であることを宣言→重量決定者bが決めた重さがB社のいうオブジェクトの重さになる。

 などなど。


  オブジェクトという幽霊に、会社ごとに、違うイメージや重さなどを託している。そんな感じ。

  だから、オブジェクト自体はゲットすることができない。

 ゲットできるのは、あくまで、 託されたもの、コンポーネントで付与した姿形、重さ、などなどだけ。




 

ボタンを押された回数をカウントする

 


クリックされた数を数える

 モグラがたたかれた回数(ボタンを押された回数)をカウントしたい。

 他のモグラも設定する可能性も考えて、 モグラの方に入力できるようにしておいて、

public int Pushmogupoint;

 あとは、 モグポイントも作って、

 moguPoint = moguPoint + Pushmogupoint;

 みたいな感じでどうだろう?

カウント数を表示

 それから、UIを作って、このモグポイントを表示しよう。


 たたかれたモグラの数がスコアになるはず。

 おお、ゲームっぽくなった!


スコアがついた


2021年3月18日木曜日

変化するボタンにする

 


ボタンにアニメーションをつける

 次は、ボタンにアニメーションをつけてみよう。

 インスペクターのボタンの、 遷移のところを、「アニメーション」にする。


 オートジェネレートアニメーション(Auto Generate Animation)をクリックすると、保存するように指示が出るので、保存すると、アセットの下に、ボタンの遷移についてのアニメーションを設定するパネルができている。

 アニメーターウインドウと、ボタンの個別の状態のときのアニメーションを設定できるボタンができている。

ボタンの状態


Normal        通常状態

Highlighted    ボタンがハイライトされているときの動き

Pressed       ボタンが押されたときの動き

Selected     ボタンが選択されたときの動き

Disabled        ボタンが無効の時の動き

キーフレームでアニメーションをつける

 ボタンのそれそれの状態の時の動きについて、キーフレームでアニメーションを設定していく。

 GIFアニメを作るのと、MMDやAdobeAftereffects、クリップスタジオペイントなどでも使われているキーフレームによるアニメーション設定とだいたい同じ。

 アニメーションウインドウで、時間を白い縦線で選び、そのときの位置、大きさ、画像などにインスペクターの値を変化させ、アニメーションウィンドウの該当位置をダブルクリックしたり、設置用の+キーを押したり、でキーフレームが設定される。

 位置や大きさについては補間があるが、画像については変化は補間されない。


 アラートが

 動かしてみたら、アラートが。

'Button' AnimationEvent has no function name specified!

 どうやら、うっかり、アニメーションイベントを追加してしまっていたようなので、すべて削除で解決しました。(時間の横軸にしおりみたいな縦棒のマークがついていたので、消去)



 



 

ボタンを押すとクリアー

 


目標:ボタンを押すとクリアーにする

  ボタンを押すと、色が変わるとか、何か出てくるとか、計算をするとか、いろいろ考えられるけれど、とにかくまずは、簡単な、簡単な、簡単なものから。

 ここまでないほど簡単なゲームクリアーを考えてみた。

 ボタンを押したらゲームクリアーにする。

 ゲームクリアーのパネルを用意して、ボタンを押したらそのパネルを表示すればいいと思う。

 試してみよう。 

パネルを調達

 スマホの大きさに合わせて、1280×720のサイズでパネルを用意。

 とりあえず、バックグラウンド、クリアーを作ってみることにした。

 だいたい、どんなイメージにしたいかというと、動くボタンを作って、それを押したらクリアーというのはどうだろうか。

 動いているのをたたく、といえば、台所の黒いやつはさすがに、指でたたく気になれないので、モグラたたきみたいな感じでどうだろうか。

 だからちょっと、野原をイメージで。

 ペイントソフトで、とりあえず、簡単に、カキカキカキ……

スプライトといっても、飲み物ではなかった

 描いた画像をアセットの下にファイルを作って、 入れるのだが、どうやら画像のことを、Unityでは、imageじゃなくて、スプライト Sprite と呼ぶらしい。スプライトと聞くと、どうもサイダーを思い浮かべてしまうのだが、このスプライトはジュースではない。

 描いた画像をすべてSprite 用のフォルダに入れてしまったら、ゲームで使うPanelの用意だ。

パネルの用意

 まず、メインパネルのイメージのソース画像のところに、背景用に描いた画像を入れて、位置合わせ。「元来のサイズを設定」 アンカーは、中央、真ん中。

 ボタンの方のソース画像にとりあえず、モグラの画像を一枚入れる。

 今は、さっきのスクリプトのままなので、メインのモグラをクリックしたときだけ、コンソールに「ボタンが押された!」と表示されますね。

 おお、モグラを押すと表示されるの、何か、かわいいではないですか。 

 


  次に、もう一枚パネルを用意して、こちらにはクリアーの画像を設定。

 同じキャンバスの、メインのパネルの下に並べておきます。

 さっきのスクリプトに少し書き足し。頭の方に、

    public GameObject clearPanel;

 というのと、ボタンが押されたログを出す下に、

     clearPanel.SetActive(true);

  結局、

public class ButtonOsuto : MonoBehaviour
{
    public GameObject clearPanel;

    public void ButtonOsitayo()
    {
         Debug.Log("ボタンが押された!");
        clearPanel.SetActive(true);

            }
}

 メインの方で、最初はクリアパネルを非表示にしておきます。

 あと、ボタンにつけたスクリプトが、ClearPanel がどれか聞いてくるので、さっき画像を設定したクリアパネルを指定します。

さあ、スタートしてみよう!

 ボタンを押すとクリアー

 


  無事、モグラをクリックすると、クリアーになりました!!

 



 

 

2021年3月17日水曜日

押せるボタンにする

 


 押せないボタンは、絵に描いただけのボタンだ

 まずは、 押せるボタンにしたい。

 押して、何か変化が起きるようにする。

 そして、何かルールにのっとって、成功と失敗が作れれば、とりあえず、ゲームになるはず。

 

 まずは、押せるボタンをめざそう

  ボタンに、イベントトリガーというのが最初からついていて、これに、押したときに何か起きるように設定すると、押せるようになるらしい。

 とりあえず、アセットの下に、スクリプトを入れるファイルを作って、スクリプトを作成。「NewBehaviourScript」というのができた。ダブルクリックでオープン。

 とりあえず、動くのかどうか、スクリプトをコピペしてきて、アタッチ、と。

スクリプトがアタッチできない!


 あれ、何度ボタンにドラッグしたり、「コンポーネントを追加」から入れようとしても、スクリプトがアタッチできない。

  なぜだろう?

 

 これも、ネットの情報さまさま。

 「NewBehaviourScript」という名前を、

public class ××× : MonoBehaviour 

のところの「×××」と同じにしないとけなかったのか。

 おお、アタッチできた!


イベントトリガーに設定

 それでこれを、イベントトリガーに設定、と。

 これでいいのかな?


押せるボタンになった!

 スタートさせても、エラーは出ない。

  さあ、ボタンを押してみよう。

 コンソールに、出ました!「ボタンが押された!」

 成功!! 押せるボタンになった!


 押せるボタンができたじゃないですか。

 ちなみに、スクリプトは、これだけです。

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

public class ButtonOsuto : MonoBehaviour
{
    public void ButtonOsitayo()
    {
        Debug.Log("ボタンが押された!");
    }
 }

小さな成功を積み重ねてよちよち

 できた、できた!

 はじめたばかりで、よちよちの時は特に、 小さな成功を積み重ねるのが大事だよね。




ボタンが見えなくなる不思議


先にスマホの大きさに画面設定

 ボタンができた。

 しかし、目的はスマホゲーム。なので、まずは画面の大きさをそろえないと。

 とりあえず、720×1280縦置きで、 設定をはじめたのですが、なぜか、ボタンが見えなくなってしまった。

ボタンが見えなくなった

  ネットを検索して、カメラの設定だの、パネルの大きさだの、ボタンの位置だの、ぐるぐると直しているうちに、なんとか復帰しました。

 謎は残りますが、とりあえず、復帰。



 

 

2021年3月16日火曜日

ゲームとは何だろう?


ゲームとは何だろう?


 自分なりに思っているゲームの定義って、何だろう?

 何か楽しい体験(いや、楽しいだけじゃなくて、怖い体験とかもあるけど)ができる。 

 勝ち負けは、必須ではないけど、あるものが多い。

 もっと遊びたくなるような、引きこまれるものがある。

何が、必要な最低条件だろう?

 楽しい体験で、引きこまれるというなら、映画や動画を見るのでも、体験できる。

 ゲームだと、少なくとも、 2つ以上の選択肢があって選べる。選ぶことで、できる体験が変わる。

 ん?

 選択肢があって、 選んだことによって違う選択肢が出てくるだけなら、アンケートだってゲーム?

 アンケートとゲームの違いは、乗り越えたい壁があるかないかだろうか?

 困難があって、それを選択によって乗り越えることで楽しみが得られるかどうかかな。

 それから、そうだ。選んだ結果をルールに基づいて判定されるかどうか。

 アンケートだと、判定はされない。

最初に何を作ればいいか考える

 つまるところ、遊ぶ人が、何か選択ないし、入力できないといけないということ?

 それなら、Unityでスマホゲームを作ろうと思ったら、少なくとも、まず覚えなくてはいけないのは、入力できるもの。

 とりあえず、ボタンとか、押したら画面とか何かが変化するものを作れるようにしないといけなそうだ。

 よし、ボタンを作ってみよう! 

  新規プロジェクトで、新規に2Dプロジェクトを作り、スマホゲームを作りたいから、ビルド設定をアンドロイドにして。

 ヒエラルキーの + から、UI → Button で、とりあえず、できた。

 


 ボタンは、押すもの

 作っただけで、今のところ、クリックしても何も起こらない。

 だけど、ボタンがあれば、押してみたくなる。

 押せてこそゲームになる。

 押したら、何が起きることにしようか?

 

 

 

 

2021年3月14日日曜日

作ってみたい気持ちだけでつきすすむ

何がしたかったかを再確認する

 まあ、簡単ではなさそうなので、このまま突き進んでいいものか。自分内の、つっこみ担当を呼び出して、何をしたいのかを確かめることにします。

 

 自作ゲームを作ってみたい。

「それ、どんなゲーム?」

 ゲームだよ、ゲーム。ええと、今だったら、スマホとかで遊べるやつ?

「じゃあ、スマホゲームね。確かに、Unityでつくれるようだけど、公開するつもり?」

 できあがってから考える。できたら公開してみたいなあ。

「どこかでゲームの作り方を教えてもらうとかはする?」

 まずは、ネット内の情報から。

 場合によっては考えるけど、何万円とか何十万円もする スクールに通うつもりはない。

「いつごろまで時間をかける?」

 わからない。とりあえず、数カ月? やりたい間だけ。

「仕事にするつもり?」

 その気はない。趣味、趣味。 

「難しかったら、手を引く?」

 仕事にするつもりはないから手を引いてもいいけど、とりあえず、簡単なの一つぐらいは完成させてみたい。

「やっていて、楽しい? もしくは、楽しそう?」

 もちろん! わくわく感はんぱない!

「それなら、進んでよし!」

 

よちよち歩きでいいじゃない

 それでまあ、結局、ネットの情報と、さすがにあまりにもゲーム開発が初めてなので、1500円前後ぐらいで講座を受けられるキャンペーンをしていたのもあって、Udemyの講座も受けてみることにしました。

 こうして、初めてのスマホゲーム開発に向けて、よちよち歩きを始めました。

 はたして、完成、公開まで持っていけるのでしょうか。

 まあ、初心者が趣味で作るレベルだから、たいした物になるわけがありませんが、 とにかく、コードが通らなくて、ネット検索で攻略法を探して、と、それ自体がゲームのようで、今のところ、すごく楽しい作業です。

 趣味だからいいけど、たぶん、これが毎日だったら苦行になる。

 あ、また壁だ。



Unity初心者がぶつかる壁という壁にぶつかるつもりらしい


大文字小文字の壁を越えて

 コピペなら通っていたコードが、自分で書くととにかく通らない、その原因がまず、大文字小文字にあったのは、初心者あるあるのお笑いですますとして。

 よちよちの初心者がぶつかる壁はまだまだあるようで。

右と左の壁

 普通の感覚なら、

 1 + 1 = 2

 計算結果は左じゃない?

=の壁

 i = i + 1

 プログラミングを少しでも知っていれば、これは記述として正しいことがわかるのだけれど、普通の感覚では、  i = i + 1 は、ありえない。

  プログラミングとは、コンピュータが使っている他言語を学ぶことだと思おう。

 自分の感覚を無視して、コンピュータの感覚に合わせることと見つけたり! 

 

とりあえず、Debug.Log(); 

 とりあえず、Debug.Log(); は、覚えたよ!

 Debug.Log(””);  で、” と ” の間に、言葉を書けば、表示される。

 数字だったら、 Debug.Log(); の () の中に書けば、表示される。

 Debug.Log(””); では、表示されない! 

 そう、; が、大文字だから!!

 

 





初めてUnityにさわってみた

 

初めてUnityにさわってみた

  自作ゲームを作ってみたいという、長年の夢をかなえたくて、それならUnityがいいとかいう情報に乗せられて、専門家に相談することもなく、なんとなくUnityをさわってみることにした。

 これまで、プログラミングは、昔の昔にベーシック(いつの時代?)の初歩程度は習ったことがあるので、四則演算だの if や else の分岐などは、多少は理解できている という状態。

 Unityの名前を聞いたのは、Live2DがUnityに組み込める、などというアニメがらみから、Unityって何だろうと検索したのが始まりだったと思う。

よさげな雰囲気と英語の壁

 Unityはゲームエンジンというものらしい。詳しくはわからないが、どうやらゲームを作るのを簡単にしてくれるソフト、という位置づけのようだ。

 Unityのサイトには、「ゲーミング」「フィルム、アニメーションおよびシネマティック」などという魅力的な言葉が!!! これは、やってみたい!! 期待感がMAXになった。

 ゲーム制作に使える上に、自作アニメ作りにも使えるものなのかもしれない。

 いろいろなチュートリアルもあるようだし、ひとつ。

 と、ここでぶつかったのが、英語の壁。

ネットの情報はありがたい

  Unityのサイトには、たしかに、いろいろなチュートリアルもあるようなのだが、ほとんどが英語で、簡単にはいかなそう。

 ためしにひとつ入れてやってみたが、何が何やらさっぱり。ということで、日本語で何とか、とネットで探してみた。

 ネット検索で、導入のしかたはさまざまなサイトでしっかり書かれていたので、導入までは簡単。しかも、Unityは、個人が軽く使う分には無料!

 四則演算だのif elseについても、書いてあるものが多いから、これも問題なし。

 ネットの情報さまさまで、とりあえず導入まではできた。

 とりあえず、コピペで動かしてみる。計算したものをコンソールに書き出す、といった程度から。

 これは、だいたい動く。

 しかし、自分で書いてみたら、さっぱり動かない。なぜだろうと首をひねった。

最初の壁

 全角のコンマ ,と半角のコンマ , 簡単に見分けられますか?

 全角のピリオド .と半角のピリオド . 簡単に見分けられますか?

 これが、最初の壁でした。 


 


 

新作ゲームリリースしました

   ようやく、Androidスマホ用新作ゲームをリリースすることができました。   「封竜陣」  Google Play ストアからダウンロードをよろしくお願いします。   『西遊記』『封神演義』『狐狸縁全伝』などでおなじみの天将たちと一緒にパズルを解いて竜を封印していくという...