MYMYゲーム制作室

アラ古希姉妹のゲーム制作日記

ひろはすさんとお話できた(^o^)

ひろはすさんとお話が出来た。

私たちMYMY70にとって、ゲーム制作の水先案内人、羅針盤、メンターであるひろはすさんと直接お話できたのは夢のようだ。

去年の暮にまたコンとポンの2人でゲーム制作を再開しようと決めたとき、わたしたちの時計は12年前の2010年で止まっていたわけで、現在のゲーム制作事情は、全く右も左も分からなかったのだ。

ネットで「ゲーム制作初心者」「スマホゲーム制作」などと検索していたときに、ヒットしたのが、ひろはすさんのYou Tubeだった。

そこから毎日ひろはすさんの「ゲームクリエーター養成所」を見て、UnityやらUnreal Engineやら、現在のゲーム制作に欠かせないソフトの事や初心者でも作れるUnityのはじめの一歩を学ぶことが出来た。

その後Unityのラーニングやあちこち他のサイトのチュートリアルでも学ばせて頂いているが、モチベーションが下がったときに、ひろはすさんの動画を見返すと、背中を押してもらえて、またガンバろうという力が湧いてくる。

30分という短い時間だったので、自己紹介とかひろはすさんとを知ったきっかけなど、簡単なお話をしただけだが、いつもYou Tubeで見ているだけのひろはすさんが、チョクで受け答えをしてくださるのは感動だった。

具体的なゲームの作り方についての悩み相談をしたわけではないが、ゲーム作りのエネルギーを頂けた気がする😃

 

敬愛する「ひろはすさん」とお話できるぞ~!ワクワク(*^_^*)

わたしにとってゲーム制作の羅針盤のようなYouTube

ひろはす ゲームクリエイター養成所 の

ひろはすさんと直でお話できるチャンスが降ってきた。

 

2022.09.04 ひろはすさんと信虎さんの主催のイベント

「超実践型 ゲーム制作体験ワークショップ」というのがあり、

会場での参加はできなかったのだが、オンラインで参加した。

そのメンバーを対象として、ひろはすさんが個別インタビューの協力者を

募っているということで、そのお知らせを見たと同時に即申し込んだ。

 

そのインタビューが、明日(もう今日か)の予定。

 

これは楽しみしかない!!!(*^▽^*)

いつも元気をもらえるこのチャンネル。

まだゲーム制作のはしくれとも言えないようなビギナーでも、

背中を押してもらっている。

ワクワクだ。

 

(こん)

 

Unity キツネくん森へ行くゲーム、そろそろ仕上げにかかろう!

ボス戦はなしで仕上げとしよう!

「キツネくん森へいく」ゲーム、ボス戦まで作りたいのはやまやまだが、「後からいろいろやりたいことを増やすと仕上がらなくなる」とは、敬愛するひろはすさんも言っていた通り。どんどん完成が遠ざかる。

最初はUnityのチュートリアルRuby’s Adventureの画像を入れ替えてマイマイ70流のゲームに作り変えて、卒業制作としようという計画だった。

やっているうちに、次のシーンも増やそうということになり、そのシーンは迷路っぽくしよう、少し薄暗いシーンにして蛍のような光る胞子を飛ばそう、となった。

そしてオープニングがないのもゲームとしては物足りないから、タイトルシーンを作ろうという話になり、そのシーンには本を開いて物語を読むような仕組みにして、解説文をスクロールさせよう、となり、ここまでも当初の計画よりかなり要素を詰め込んだ作品になっている。

このあと、ボス戦を入れるとなると、「最後の面だから難易度を上げて、やりごたえのあるゲームにしたいよね・・・」などと、終わりがどんどん遠ざかっていく。

いろいろ手直しする間に、ほぼ完成!と思っていた部分に不具合が出てきたりするのもしょっちゅうで、やればやるほど、ドツボにはまる気もして、ボス戦は続編でやることに決めた。(そしてボス戦ではスマホ対応のゲームに挑戦してみたい。それは2D横スクロールでと考えている)

 

今回制作中の「キツネくん森へいく」ゲームの内容はこんな感じでまとめることに。

タイトル→真っ暗森→タヌキとの出会い→花咲森で木のゾンビとの闘い→ゲームクリア

という流れで、このゲームは完了となる予定。

 

完成までにやらなくてはならないことリスト。

1.ゲームクリアの効果音を探して入れる。

2.ゲームクリアシーンを華やかにする。

 →メインシーンのVcamが映し出すエリアを広げることで、花の咲いた森を見渡すよう    にする。VcamのLensのOrthoSizeを大きくすることで対応済。

3.ゾンビを全員やっつけたら、森全体の木に花が咲くようにする。

 →ゾンビが花の咲いた木に変身したのと同様に、ゲームクリアと同時に木のあった positionに花の咲く木をinstantiateすることで対応する。

4.おはなしシーンの音楽を似合ったものに変える

 →Unityのアセットストアで無料の音源をダウンロードしてきた。「かるがもBGM」というアセット(日本人の作成のか?)からよいものを見つけたので、シーンに挿入済。

 

まあ、こんなところかな。

 

共同作業がテンポアップ

昨日、MYMY70の二人の連携に画期的な発見が!

ま、去年の暮からやりだして、今更??ということではあるのだが、パソコンのLINEでビデオ電話しながら、作戦会議をすると、画面をシェアできて、とても便利!!!!ということが分かったこと。

今までは夜中にお互いにスマホのLINEでしゃべりながら作業をしたり、時々ビデオ通話にしてやっていて、ポンさんが描いた絵をGoogleドライブで送ってもらったり、こんが書いたスクリプトをメモ帳にコピーしてそれをGoogleドライブで送ったりしていた。

 

面倒くさく効率が悪いな~と思いながらも、対策を講じないで我慢しながら共同作業をしていた。わたしのスマホはビデオ電話を長くしているといつも加熱して途中でダウンしてしまうのもストレスだった。

 

それがパソコンのLINEでビデオ通話にすることで、遠隔地同士の共同作業が全く苦にならなくなった。同じ部屋で相談しながら作業しているような感覚!

あとこれまでスクリプトのやり取りもネックだったのだが、そのスクリプトもLINEに直接貼り付けて送って、ぽんさんがそれをコピーして自分のスクリプトに貼り付ければ、ちゃんとVisualStudioが文字の色や書式を正しく書いてくれることも分かったし(*^_^*)

 

遅々とした歩みのMYMY70も少しずつ技術も知識も、作業環境も向上してきている。

がんばろう!!!!(こん)

 

約20年前

『MYMY工房』(というクリッカブル絵本のサイト)をやっていた時もね…

遠隔地で作業をするのにデータを

宅ふぁいる便で送りあったり

この作業のしにくさはあの頃と全然変わってないなぁ

思っていたけど

なんのことはないLINEという

心強いアイテムがあったんじゃんねぇ🤭‼️

気づいて良かった😁

MYMYぽん(記)

 

悩ましいラスボス戦(いまだに迷走中...)

今制作中の『きつねくん森へいく』(仮)は

きつねくんが森のたぬきさんに頼まれて

乱開発で環境が変わってしまった森を救う!

というメインテーマがあります

素朴な森のたぬきさんは

乱開発

悪いドラゴン"ランカイ-ハーツ"だと信じています。

 

というわけで

乱開発っぽいドラゴンにするか...

と考えて

なんとなく重機っぽい要素のあるドラゴンを色々考えたのですが

力量が追い付かず

かわいくもなんともない物が次々と

Ranquaii-Herts ドラゴン①

Ranquaii-Herts ドラゴン②

Ranquaii-Herts ドラゴン③

Ranquaii-Herts ドラゴン④

こんなキャラは愛せない(笑)

ちょっと肩の力を抜いて…

Ranquaii-Herts ドラゴン⑤

Ranquaii-Herts ドラゴン⑥

こんな方がだいぶましかなぁ?

 

といろいろ試行錯誤しましたが

こういうドラゴンとどうやってきつねくんが

戦うんだろ?

と考えてたら

やっぱり

ラスボス戦は

いらないね

 

今のところ

そんな結論に達しそうです。

MYMYぽん(記)

 

Unity:ジャンプの続き 

ジャンプはできるようになったが、れいさんのお手本のようにやらなくても、ジャンプできるんじゃないかな、、、と考えたので、試してみた。

 

れいさんは、GroundCheckをしている。

プレーヤーが地面にくっついているかどうかをチェック。

地面に立っているときは、ジャンプできる。

そのフラグだけを立てると、空中ではジャンプできないことになり、結果地面から離れることはなくなる。

そこでisJumpといういフラグも作っている。isJumpの状態でもジャンプはできる。

というわけで、キーを押し続ければ大きなジャンプ、一瞬押すだけなら小さいジャンプになるという寸法。

でも、それなら、結局常にジャンプできるわけなので、上キーを押したら上に向かって移動するとスクリプトを書くだけでいのでは?

 

インスペクターのフィールドにspeed, jumpSpeed などのフィールドに数値を入力。

再生すると、ジャンプできる!

2段ジャンプも3段ジャンプもできる。特に問題はない。

 

しかし、どこまでも飛べてしまうのもおかしいので、れいさんも飛べる高さを制限するコードを追加している。真似して飛べる高さの制限を設けてみた。そのスクリプトがこれ。

スクリプト👇

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

public class Jump : MonoBehaviour
{
    public float speed; //横移動のスピード
    public float jumpSpeed; //縦移動のスピード
    public float gravity; //重力 
    //public bool jump = false;
    public float jumpHeight;


    //プライベート変数
    //private Animator anim = null;
    private Rigidbody2D rb = null;
    private float xSpeed;
    private float ySpeed;
    private float jumpPos = 0.0f;//ジャンプを始めた位置

    void Start()
    {
        //コンポーネントインスタンスを捕まえる
        // anim = GetComponent<Animator>();
        rb = GetComponent<Rigidbody2D>();

    }


    /* void OnCollisionEnter2D(Collision2D other)
     {
         if (other.gameObject.CompareTag("Ground"))
         {
             //jump = false;

         }
     }
    */

    void FixedUpdate()
    {

        //キー入力されたら行動する
        float horizontalKey = Input.GetAxis("Horizontal");
        float VerticalKey = Input.GetAxis("Vertical");
        float ySpeed = -gravity;
        rb.velocity = new Vector2(xSpeed, ySpeed);


        if (horizontalKey > 0)
        {
            jumpPos = transform.position.y; //ジャンプした位置を記録する
            // anim.SetBool("run", true);
            xSpeed = speed;
        }
        else if (horizontalKey < 0)
        {
           
            xSpeed = -speed;
        }
        else
        {
            //anim.SetBool("run", false);
            xSpeed = 0.0f;
        }


        // if (!jump)
        // {

        if (VerticalKey > 0)
        {
            ySpeed = jumpSpeed;
            rb.velocity = new Vector2(xSpeed, ySpeed);
           
            // anim.SetBool("run", true);

            // jump = true;


             if (jumpPos + jumpHeight > transform.position.y)
            {
                ySpeed = jumpSpeed;
            }
            else
            {
                ySpeed = 0.0f;
            }
        }
 
        else
        {
            ySpeed = 0.0f;
        }

        //}

    }

}

 

でも、ジャンプスピードを5にすることで少し勢いよく飛びあがる感じにはなったが、降りてくるスピードがいまいち。ふわーっと上品に降りてくる。飛びあがるスピードに比べて、あまりにゆっくり過ぎる。インスペクターのGravityを1から、5,10,などと大きい数字に変更してみたが、降りてくるスピードに変化が感じられない。

これはどういう事なんだ????重力と落ちるスピードは関係ないのか・・

なんだか、ニュートンみたい。。。。

いずれにせよ、なんかジャンプとは違う。(こん)

 

 

Unity: 移動のつづき 今度はジャンプ!そしてDragonもできてきた。

赤いスクエアを

①左右に動かす。

②上下左右に動かす。

③キー操作なしで自動で動かす。

④一定の時間で反転するように動かす。

⑤ランダムに動かす。

は、できるようになったので、今度は

⑥ジャンプさせる。をやってみよう。

 

基本的にはrb.Velocity=new Vector2(xのスピード、yのスピード );

のスタイルでやってみたい。

②のスクリプトに手を加えればできそう。

 

チュートリアルをなるべく見ないでトライしてみることに。

 

上下の動きはこないだできたわけだから、縦のスピードを大きくすれば、ジャンプらしく見えるでは?

やってみると上には移動するものの、落ちてこない。

そりゃそうだ!Rigidbodyの重力をゼロにしてあったからね。

重力を1にしてやってみる。

そうすると当然、ほっといても赤いスクエアは下に落ちてくる。

が、放っておくとどこまでも落ちていく。

ジャンプをやるときは、地面がないとダメだな。

2Dオブジェクトのスクエアをもう一つシーンに追加してGroundとする。

これにBoxColliderを付けた。

これで赤いスクエアは画面からいなくならないね。と思ったがまだ落ちていく。

衝突判定は、二つのオブジェクトの両方にColliderがあることと、すくなくともどちらかにRigidbodyがあることが条件だった!!

地面にはRigidbodyはなくてもよいわけだし、赤いスクエアには既にRigidbodyはついているわけなので、赤いスクエアの方にBoxColliderを付ける。

これで地面で止まるようになった。

 

ジャンプらしくピョンと飛び上がる感じをだすには、横移動とは違い、かなりのスピードが必要なのに違いない。横移動のxスピードは2だったので、yスピードを10にしてみるが、なんだかのんびりとした動き。更に50,100,1000と増やしてみたけど、あまり変化はない。これではダメなようだ。スピードを速くするだけでは、ジャンプの動きにはならないようだ。

ここで、やはりチュートリアルを参考にすることに。

今日もれいさんのサイト参照

Unity 2Dアクションの作り方【ジャンプ】【高さを押した長さで変更可】 | ゲームの作り方! (dkrevel.com)

れいさんはインスペクターの重力を使わずに、スクリプトから重力を操作していた。

自分で決めた重力(Gravity)を飛び上がるスピードとしても使っている。

あと、地面との衝突判定のために地面にもGroundCheck.csというスクリプトを作って貼り付けているが、これが結構複雑、、、、OnTriggerEnterとOnTriggerStayとOnTriggerExitを全部チェックして場合をわけているが、そこまでやらないとダメなのか、、、、?

地面のTagをGroundにして、OnTriggerEnterなら飛ぶかとやってみたが、飛ばない( ;∀;)

ん?なんでだ?     なるほど~~!

一瞬飛びあがっても、地面とくっついていない状態になると、着地しているというフラグがfalseになってしまうため、飛び上がれなくなってしまうということか。ちゃんとれいさんが解説してくださっている。手抜きしようとすると、逆にわけのわからないことになって、遠回りすることになってしまう、ありがちな罠だ。

続きはまた明日、ちゃんとれいさんの教えの通りにやることにしよう。

 

今日はぽんさんがボス戦用のドラゴンをあらたに描いて、アニメーションを作ってくれていた。ぽんさんもBlackthornprodさんの動画が気に入っていて参考にしているようで、いろいろ学ぶとことがあると言っていた。

動画👇

 

ボスのわりには素朴でかわいいドラゴンだが、キツネくんとのバランスが程よい感じ。この強そうでない愛嬌のあるボスドラゴンで進めることに。周りにいるにぎやかしの雑魚は、Blackthornprodさんのチュートリアルからの借り物なのだとか。

キツネくんとドラゴンがぽんさんのオリジナル。まだキツネくんはおいてあるだけだから、石の地蔵のようにただ突っ立っているだけ。ドラゴンがいくら脅しにかかっても平然としているから、逆にドラゴンの方がびっくりしているw

(こん)

 

 

 

 

 

 

 

Unity :移動について、テストしてみたこと。Rigidbody.velocityとRandom.Range()を使って。

Unity 移動に関するテストのまとめ。

 

テスト①

れいさんのサイトからコピーしてきたスクリプトでまずやってみた。

これはキー操作で左右に動かすもの。Horizontal のキー操作のみ。

動画👇

https://streamable.com/dekpqf

 

テスト② C#  IdoRigidVelo.cs

①にVerticalのキー操作を加えて上下にも移動するようにアレンジしたもの。

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

public class IdoRigidVelo : MonoBehaviour
{

     public float speed;

    //プライベート変数
    //private Animator anim = null;
    private Rigidbody2D rb = null;
   

    void Start()
    {
        //コンポーネントインスタンスを捕まえる
       // anim = GetComponent<Animator>();
        rb = GetComponent<Rigidbody2D>();
        
        float xSpeed = 2.0f;
        float ySpeed = 0.0f;
        rb.velocity = new Vector2(xSpeed, ySpeed);
    }

    void Update()
    {
      
        //キー入力されたら行動する
        float horizontalKey = Input.GetAxis("Horizontal");
        float VerticalKey = Input.GetAxis("Vertical");
        float xSpeed = 2.0f;
        float ySpeed = 0.0f;
        rb.velocity = new Vector2(xSpeed, ySpeed);
        Debug.Log(horizontalKey);

        if (horizontalKey > 0)
        {
           // Debug.Log(horizontalKey);
           // transform.localScale = new Vector3(1, 1, 1);
           // anim.SetBool("run", true);
            xSpeed = speed;
        }
        else if (horizontalKey < 0)
        {
           // transform.localScale = new Vector3(-1, 1, 1);
            //anim.SetBool("run", true);
            xSpeed = -speed;
        }
        else
        {
            //anim.SetBool("run", false);
            xSpeed = 0.0f;
        }

       
       
        if (VerticalKey > 0)
        {
            // transform.localScale = new Vector3(1, 1, 1);
            // anim.SetBool("run", true);
            ySpeed = speed;
        }
        else if (VerticalKey < 0)
        {
            // transform.localScale = new Vector3(-1, 1, 1);
            //anim.SetBool("run", true);
            ySpeed = -speed;
        }
        else
        {
            //anim.SetBool("run", false);
            ySpeed = 0.0f;
        }


        rb.velocity = new Vector2(xSpeed, ySpeed);
        
    }

 

動画👇

https://streamable.com/84b9cm

 

 

テスト③ C#  IdoAutomatic キー操作によらず勝手に動くもの。

using System.Collections.Generic;
using UnityEngine;

public class IdoAutomatic : MonoBehaviour
{
   
    private float xDirection = 1.0f;
    private float yDirection = 0.0f;

    void Update()
    {
        Rigidbody2D rb = this.transform.GetComponent<Rigidbody2D>();
       
        rb.velocity = new Vector2(xDirection, yDirection);

        
    }
}

 

動画👇

https://streamable.com/lett03

 

 

テスト④ C# IdoReverse 

③に手を加え一定時間が経過すると動きが反転するようにしたもの。

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

public class IdoReverse : MonoBehaviour
{
    private float chargeTime = 2.0f;
    private float timeCount = 0.0f;
    private float xDirection = 1.0f;
    private float yDirection = 1.0f;

    void Update()
    {
        Rigidbody2D rb = this.transform.GetComponent<Rigidbody2D>();
        timeCount += Time.deltaTime;
        rb.velocity = new Vector2(xDirection, yDirection);

        // 指定時間の経過(条件)
        if (timeCount > chargeTime)//タイムカウントが設定したチャージタイム(2秒)を超えたら
        {
            xDirection = -xDirection;
            yDirection = -yDirection;


            timeCount = 0;//タイムカウントをゼロに戻す
        }
    }


}

 

動画👇

https://streamable.com/xyxffn

 

テスト⑤

④に更に手を加え、上下左右2秒ごとに動く方向をランダムに変えるもの。

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

public class IdoRandom : MonoBehaviour
{
 

    private float chargeTime = 2.0f;
    private float timeCount = 0.0f;
    private float xDirection = 1.0f;
    private float yDirection = 0.0f;

    void Update()
    {
        Rigidbody2D rb = this.transform.GetComponent<Rigidbody2D>();
        timeCount += Time.deltaTime;
        rb.velocity = new Vector2(xDirection, yDirection);

        // 指定時間の経過(条件)
        if (timeCount > chargeTime)//タイムカウントが設定したチャージタイム(2秒)を超えたら
        {
             xDirection = Random.Range(-1.0f, 1.0f);//x方向のためにランダムな少数-1.0~1.0を取得
             yDirection = Random.Range(-1.0f, 1.0f);//y方向のためにランダムな少数-1.0~1.0を取得
                                                  

            timeCount = 0;//タイムカウントをゼロに戻す
        }
    }

}

 

動画👇

https://streamable.com/bnhv5y

 

 

スクリプトは全部で5つ作ってそれを全部赤い2DオブジェクトSquareにアタッチ。

一旦全部チェックを外し、見たいものだけにチェックをいれて、それぞれのスクリプトがどんな動きを作り出すかテストしてみた。

インスペクターの中の5つのスクリプトを、一つずつチェックを入れてテストしてみた。

 

はてなブログに動画を貼り付けるやり方(Streamable)も分かったので、今回は動画入りで記録ができて、それも良かった!エンベッドのタブでコピーしたものを、はてなブログのHTMLの中に埋め込んだら、ブログの中に動画が登場!

 

次はかわいいかおもじアイコンの出し方も研究したいな~。

今日は収穫があった!(こん)