見出し画像

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

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

例えば、付けたObjecを自動でスクロールさせるスクリプト【AutoScroll.sc】

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

public class AutoScroll : MonoBehaviour
{
   public float m_Dx = -0.1f;
   public float m_Dy = 0.0f;
   public float m_Dz = 0.0f;
   public float m_Wx = 6.0f;
   public float m_Wy = 0.0f;
   public float m_Wz = 0.0f;
   float m_Nx = 0.0f;
   float m_Ny = 0.0f;
   float m_Nz = 0.0f;
   Vector3 spos;

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

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

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

   private void FixedUpdate()
   {
       float dt = Time.fixedDeltaTime * 50.0f;
       m_Nx += m_Dx * dt;
       m_Ny += m_Dy * dt;
       m_Nz += m_Dz * dt;
       m_Nx = (m_Nx > m_Wx) ? -m_Wx : ((m_Nx < -m_Wx) ? m_Wx : m_Nx);
       m_Ny = (m_Ny > m_Wy) ? -m_Wy : ((m_Ny < -m_Wy) ? m_Wy : m_Ny);
       m_Nz = (m_Nz > m_Wz) ? -m_Wz : ((m_Nz < -m_Wz) ? m_Wz : m_Nz);
       transform.position = new Vector3(spos.x + m_Nx, spos.y + m_Ny, spos.z + m_Nz);
   }
}

※dx,dy,dz:速度幅 Wx,Wy,Wz:スクロール幅               ※配置位置から前後Wx,Wy,Wzをスクロールする

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

例えば歩きモーションだけの包丁女に【AutoSceoll.sc】を放り込むと

画像1

のように動き出す。

自分はゲーム中の流れる雲などに使っている

画像2

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

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

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

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