コード置き場「2DSTG #41 – #50」

コード置き場(2DSTG #41-#50)
スポンサーリンク

【2DSTG制作】の動画内で表示されるコード:#41 – #50

サムネイルをクリックすると、YouTubeの動画ページに移動します。

#42:ボスユニットの登場演出

サムネイル#42

LineRenderer_Animation
using UnityEngine;
using DG.Tweening;


// 表示する線
[SerializeField] LineRenderer lineRenderer;

void Start()
{
    var sequence = DOTween.Sequence();

    // 線の幅を変更する(0 => 0.5)
    sequence.Append(DOTween.To(() => lineRenderer.startWidth, num => lineRenderer.startWidth = num, 0.5f, 1.0f))
        .Join(DOTween.To(() => lineRenderer.endWidth, num => lineRenderer.endWidth = num, 0.5f, 1.0f))
        // 1.5秒待機
        .AppendInterval(1.5f)
        // 線の幅を0にする(非表示)
        .Append(DOTween.To(() => lineRenderer.startWidth, num => lineRenderer.startWidth = num, 0, 1.0f))
        .Join(DOTween.To(() => lineRenderer.endWidth, num => lineRenderer.endWidth = num, 0, 1.0f))
        // アニメーション終了後に削除
        .AppendCallback(() => Destroy(gameObject));
}

#45:緊急回避の実装

サムネイル#45

指定した位置まで移動させる
using UnityEngine;
using DG.Tweening;


// 再生するアニメーションのトリガー
static int dodgeParamHash = Animator.StringToHash("Dodge");

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        // スペースキーが押されたら、緊急回避のアニメーションを再生
        animator.SetTrigger(dodgeParamHash);

        // 入力されていた方向キーに応じて相対的に移動
        if (Input.GetKey(KeyCode.UpArrow) && Input.GetKey(KeyCode.RightArrow)) {

            // 入力が右上であれば、右上に移動
            transform.DOLocalMove(new Vector2(1, 1), 0.7f).SetRelative(true).SetEase(Ease.OutExpo);

        // 入力が右下であれば、右下に移動
        } else if (Input.GetKey(KeyCode.DownArrow) && Input.GetKey(KeyCode.RightArrow)) {

            transform.DOLocalMove(new Vector2(1, -1), 0.7f).SetRelative(true).SetEase(Ease.OutExpo);

        // 中略 //
        } else {
            // 方向キーが押されていない場合は右に移動
            transform.DOLocalMove(new Vector2(1, 0), 0.7f).SetRelative(true).SetEase(Ease.OutExpo);
        }
    }
}

#46:敵ユニットの移動経路

サムネイル#46

移動経路の設定
using UnityEngine;
using DG.Tweening;


// ユニットが通過する座標
[SerializeField] Vector3[] wayPoint;

// 移動時間
[SerializeField] float moveTime;

void Start()
{
    // 生成したパスに沿って移動させる
    transform.DOPath(wayPoint, moveTime, PathType.Linear)
        // 等速移動
        .SetEase(Ease.Linear)
        // 撃破されたらアニメーションを停止
        .SetLink(gameObject);
}

#47:ボスの移動パターン

サムネイル#47

移動経路の切り替え
using UnityEngine;
using DG.Tweening;


// ボスユニットが通過する座標
[SerializeField] Vector3[] wayPointA;
[SerializeField] Vector3[] wayPointB;

// 移動時間
[SerializeField] float moveTime;

Sequence sequence1;
Sequence sequence2;

void Start()
{
    sequence1 = DOTween.Sequence()
        // パスに沿って移動
        .Append(transform.DOPath(wayPointA, moveTime, PathType.Linear).SetOptions(true))
        // パスを1周したら少し待機
        .AppendInterval(0.5f)
        // 無限ループ
        .SetLoops(-1)
        // 自動で破棄しない
        .SetAutoKill(false)
        // 自動で再生しない
        .Pause()
        // オブジェクトが削除されたタイミングで破棄
        .SetLink(gameObject);

    sequence2 = DOTween.Sequnece()
    ...
}

public void MovePath1()
{
    // 別のパスを停止
    sequence2.Pause();

    var path1 = DOTween.Sequence();

    // パスのスタート地点に移動
    path1.Append(transform.DOMove(new Vector3(2.0f, 0, 0), 1.0f))
        // アニメーションを再生
        .AppendCallback(() => sequence1.Restart())
        .SetLink(gameObject);
}
タイトルとURLをコピーしました