『Unityの寺子屋 定番スマホゲーム開発入門』「Chapter03 放置ゲームに演出を加えよう」+ 秋葉原Weeyble勉強会 学習記録3

Unityの寺子屋 定番スマホゲーム開発入門

Unityの寺子屋 定番スマホゲーム開発入門

序文

先程終わったばかりの勉強会を残業しながらまとめています。

weeyble-game.connpass.com

進捗

  • Chapter03 放置ゲームに演出を加えよう
    • 3-1 サウンドを追加する
    • 3-2 アニメーションを作成しよう
    • 3-3 アニメーションをスクリプトと連動させる
    • 3-4 DOTweenを使ってアニメーションをつくる
    • 3-5 スコアデータを保存する

コード実装部分(一部)

180715TheTemple\Assets\Scripts\OrbManager.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;

public class OrbManager : MonoBehaviour
{

    //オブジェクト参照
    private GameObject gameManager; // ゲームマネージャー
    void Start()
    {
        gameManager = GameObject.Find("GameManager");
    }

    public Sprite[] orbPicture = new Sprite[3]; //オーブの絵
    public enum ORB_KIND
    {   //オーブの種類を定義
        BLUE,
        GREEN,
        PURPLE,
    }

    private ORB_KIND orbKind;   //オーブの種類

    //オーブ取得
    public void TouchOrb()
    {
        if (Input.GetMouseButton(0) == false)
        {
            return;
        }

        // RectTransformコンポーネントを取得
        RectTransform rect = GetComponent<RectTransform>();

        //オーブの軌跡
        Vector3[] path = {
            new Vector3(rect.localPosition.x * 1.5f, 300f, 0f),    //中間点
            new Vector3(0f, 150f, 0f),                         //終点
        };

        //DOTweenを使ったアニメ作成
        // DOLocalPath 
        // 第一引数:軌跡
        // 第二引数:時間
        // 第三引数:パスタイプCatmullRom→曲線軌道 Linear→直線軌道
        rect.DOLocalPath(path, 0.5f, PathType.CatmullRom)
            // イージング(アニメーションの速度の変化具合?)の設定
            .SetEase(Ease.OutQuad)
            // アニメーションが終了したらAddOrbPoint()を実行する
            .OnComplete(AddOrbPoint);

        //同時にサイズ変更
        rect.DOScale(
            // 目標サイズ
            new Vector3(0.5f, 0.5f, 0f),
            // 変化する時間
            0.5f
            );
    }

    //オーブアニメ終了後にポイント加算処理をする
    void AddOrbPoint()
    {
        switch (orbKind)
        {
            case ORB_KIND.BLUE:
                gameManager.GetComponent<GameManager>().GetOrb(1);
                break;
            case ORB_KIND.GREEN:
                gameManager.GetComponent<GameManager>().GetOrb(5);
                break;
            case ORB_KIND.PURPLE:
                gameManager.GetComponent<GameManager>().GetOrb(10);
                break;
        }
        Destroy(this.gameObject);
    }

    // オーブの種類を設定
    public void SetKind(ORB_KIND kind)
    {
        orbKind = kind;

        switch (orbKind)
        {
            case ORB_KIND.BLUE:
                GetComponent<Image>().sprite = orbPicture[0];
                break;
            case ORB_KIND.GREEN:
                GetComponent<Image>().sprite = orbPicture[1];
                break;
            case ORB_KIND.PURPLE:
                GetComponent<Image>().sprite = orbPicture[2];
                break;
        }
    }
}

実行結果

www.youtube.com

感想

さっき終わったばかりです。

DOTweenというアセットを使ってアニメーションを実装するという内容はUnity本でもなかなか画期的なのでは。

また学習する内容が増えるのか…とうんざりしたりはするけど、まぁ今回ぐらいの内容ならそんなに学習コストもいらずに使えそうな感じ

正直、自分のプロジェクトのほうで大分煮詰まっていた(誤用)感じがあるので、いい気分転換になった気がします。
来週は帰省する予定なのでお休みになるんですが。

カロリーメイトください。

BGM

Night Camel feat. FBI / chelmico

www.youtube.com