見出し画像

【Unity】【ゲーム開発】【Tips】自動で振幅させるミニ汎用スクリプト

ゲーム開発をしてる時に、「ちょっとOBJECTに動きを付けたい」時がある。こういう時に汎用で使える小さなスクリプトを作って纏めておき、上記のような時にポチッと付け足せるようにしておくと便利である。

例えば、付けたObjecを自動で揺らすスクリプト【AutoWave.sc】

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

public class AutoWave : MonoBehaviour
{
   public float m_Dx = 0.0f;
   public float m_Dy = 1.0f;
   public float m_Dz = 0.0f;
   public float m_Shuuki = 4.0f;
   public float m_Time = 0.0f;
   public float m_Nx = 0.0f;
   public float m_Ny = 1.0f;
   public float m_Nz = 0.0f;
   public float sin = 0.0f;

   Vector3 spos;

   private void Awake()
   {
       spos = transform.localPosition;
   }

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

   // Update is called once per frame
   void Update()
   {
   }

   private void FixedUpdate()
   {
       //0除算阻止
       if (m_Shuuki <= 0.0f)
       {
           m_Shuuki = 1.0f;
       }
       m_Time = (m_Time + Time.fixedDeltaTime) % m_Shuuki;
       float dt = m_Time / m_Shuuki;
       float sin = Mathf.Sin(2 * Mathf.PI * dt);
       float x = spos.x + m_Nx + m_Dx * sin;
       float y = spos.y + m_Ny + m_Dy * sin;
       float z = spos.z + m_Nz + m_Dz * sin;
       transform.localPosition = new Vector3(x, y, z);
   }
}

※dx,dy,dz:振幅幅 Shuuki:振幅周期 Nx,Ny,Nz:配置位置からのずらし   ※初期値は上下に+1~-1で揺れる設定なのでNyを1上に上げている

上記のようなスクリプトを作って、各プロジェクトに自動処理用スクリプトとしてAutoなどのフォルダーに纏めておく。

画像1

「専用のスクリプトを作るまではしたくないが、ちょっと動きをさせたい」、「本作成前に仮に動かして様子をみたい」時などに、これらのスクリプトをポチッとOBJに放り込めばいい。

例えば「ミニユニティーちゃんを誘導先を示すハンバーガーマーカOBJを入れた。でもなんか寂しい」時、

画像2

上のハンバーガマーカーのOBJに【AutoWave.sc】を放り込む。

画像3

するとこうなる。

画像4

気楽に動きを付けられるので、汎用的に狙いの動きをする小スクリプトを作って置くと開発はやりやすい。

以降の記事で自分が使ってる汎用スクリプトを晒しますので、自作するのが面倒な方は勝手にコピーして使ってくだされ。

以降の記事にAutoScrollやAutoRotateなども追加していきます。




この記事が気に入ったらサポートをしてみませんか?