コイン落としゲーム その2

f:id:kazhase:20210826010845p:plain

夏の繁忙期が山場を越えたので、休みの日に一日寝て終わりという日々から、少しは充実した休日を送れるくらいに体調が戻ってきた。
とはいえ今日もせっかくの休みなのに3時間ほど昼寝してしまった(汗)

ということで、ここ数日少しはゲーム制作を進めることができた。
まずはコインが一番下まで落ちたらエフェクトが出るようにしようと思って、いろいろといじっていたらこうなった・・・

エフェクトはアセットストアから拝借
assetstore.unity.com


その後、いろいろやっていたらとりあえず狙った感じにはできた。


コインにつけたスクリプトはこんな感じ

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

public class CoinDeletScript : MonoBehaviour
{
    public GameObject particleObject;
    public float deleteCoinTime;

    // Start is called before the first frame update
    void Start()
    {

    }

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "Saucer") //Saucerタグの付いたゲームオブジェクトと衝突したか判別
        {
            Instantiate(particleObject, this.transform.position, Quaternion.identity); //パーティクル用ゲームオブジェクト生成
            Destroy(this.gameObject, deleteCoinTime); //コインを削除

        }
    }
}

public GameObject particleObject;にプレファブ化したパーティクルを、インスペクター上に入れ込むと、そのパーティクルがコインが一番下まで落ちると発動する仕組み。

さらにそのパーティクルがいつまでも残ると、画面が果てしなく明るくなってしまうので、指定した時間になるとパーティクルが消滅するスクリプトをパーティクルに付けた。

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

public class SelfDestroy : MonoBehaviour
{
    ParticleSystem particle;
    void Start()
    {
        particle = this.GetComponent<ParticleSystem>();
    }

    void Update()
    {
        if (particle.isStopped) //パーティクルが終了したか判別
        {
            Destroy(this.gameObject);//パーティクル用ゲームオブジェクトを削除
        }
    }
}

このままだと単なるコイン落としで、ゲーム性が激弱いので、
新しい要素を足していこうかと思う。