狩ブロ

やってるゲームを自由に綴る

Unity 備忘録【幸せの青い鳥】④量産オブジェクト製造システムを作る。

20230529211818 20230922154232

20210222235948

幸せの形は鳥それぞれ。

 前回までのあらすじ

第1回 toriさんのアニメーションを作成。

第2回 toriさんに重力を付与。羽ばたく力を付与

第3回 背景の設定。雲画像のスクロール。

 

■第4回 量産オブジェクト製造機を作る

これが今回の目標です。

最終的にはそのオブジェクトは得点加算に使う予定ですが、絶対長いので、

今回は量産システムを作るところまで実装します。

プログラミング初心者なのでだんだん不安になってきたところでございます。

 

それでは詳しく見ていきましょう。

今回量産するハートオブジェクトです。

20210224233142 20210224233136

即席ハートです。透過済みpng 

良かったらどうぞ。

 ①ハートを取り込んで、アニメーションを作成する。

アニメーション作成のここの過程は第1回の鳥の画像がハートになっただけなので、忘れた場合は第1回を参照

20210224233319

 

②ハートオブジェクトが左方向に移動させる。

さっそく移動させるスクリプトを書いていく。

C#スクリプトを作成。なにか分かるように名前を変更します。

私はHappyMoveとしました。

■HappyMove.cs

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class HappyMove : MonoBehaviour
  5. {
  6.     float fallSpeed;
  7.     // Start is called before the first frame update
  8.     void Start()
  9.     {
  10.         this.fallSpeed = 0.01f + 0.1f * Random.value;
  11.     }
  12.     // Update is called once per frame
  13.     void Update()
  14.     {
  15.         transform.Translate(-fallSpeed, 0, 0, Space.World);
  16.         if(transform.position.x < -10)
  17.         {
  18.             Destroy(gameObject);
  19.         }
  20.     }
  21. }

スクリプトができたら、ヒエラルキー内のハートオブジェクト(happy)にアタッチします。このスクリプトが付与されたオブジェクトは、ランダムなスピードでオブジェクトはx座標を変更します。

このあと量産しますので、オブジェクトが消化されず溜まってしまうと、処理がおもたくなってしまったりするようなので、X座標が-10の位置に達した時にそのオブジェクトは破壊されるという処理まで行っています。

③Prefab化する。

作業としては、ヒエラルキー内のhappyオブジェクトをドラッグ&ドロップでプロジェクトフォルダーの場所まで移動するだけです。

Prefab化できたら、ヒエラルキーからhppyオブジェクトは削除しておきます。

20210228100748

④Hppy量産機を作る。

量産用のC#スクリプトを作成します。

名前をHappyGeneratorとしました。

 

■HappyGenerator.cs

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class HappyGenerator : MonoBehaviour
  5. {
  6.     public GameObject happyPrefab;
  7.     // Start is called before the first frame update
  8.     void Start()
  9.     {
  10.         InvokeRepeating("happy", 0.05f, 0.20f);
  11.     }
  12.     // Update is called once per frame
  13.     void Update()
  14.     {
  15.         
  16.     }
  17.     void happy()
  18.     {
  19.         Instantiate(happyPrefab, new Vector3(10, -6.5f + 10.5f * Random.value, 0), Quaternion.identity);
  20.     }
  21. }

 スクリプトができたら空のこのスクリプトをアタッチするオブジェクトを作成します。

ヒエラルキーの、+をクリック空のオブジェクトを作成

オブジェクトができたら量産システムと分かるような名前を付けておきます。

私はhappyGeneratorにしました。

出来たオブジェクトに上記のスクリプトをドラッグ&ドロップでアタッチします。

スクリプトをアタッチしたオブジェクトを選択。

インスペクター内にPrefab化したオブジェクトをドラッグ&ドロップでいれる。

20210304154148

ここまでできたら一度、再生してみます。

ハートがランダムな速度で、たくさんとんできたら成功です。