Unity

【Unity】オブジェクトを周回させるスクリプト

投稿日:

目的

Unityでオブジェクトを周回させる方法についてメモする。今回は例としてキャラクタの周りをぐるぐる周回するSharkを作ってみます。

環境

Unity 2019 4.3f1
#NVJOB Boids
Standard Assetes

Step1 : 必要AssetのDownload&Import

今回は以下の二つのAssetを使用させてもらいます。Asset Storeから入手します。

  • Standard Assets
  • #NVJOB Boids

Standard Assetsは人型キャラクターを使うため、#NBJOB BoidsはSharkのprefabを使用するためです。

Step2 : オブジェクトの配置

まず初めにTerrianは何か適当に用意した後、Projectの中のAssetes > Standard Assets > Characters > ThirdPersonCharacter > ModelsからEthanのモデルをドラッグ&ドロップでSceneへ配置します。

次にSharkを配置します。Assetes > #NVJOB Boids >Example Scenes > Other > Shark >Mesh >SharkからSharkをドラッグ&ドロップで人型配置します。

Step3 : 周回スクリプトの作成

Project > Assetsの直下にC#スクリプトを作成し、以下のコードを記述します。以下の例ではスクリプト名をOrbitとしています。

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

public class Orbit : MonoBehaviour
{
    // Start is called before the first frame update
    [SerializeField] GameObject center;
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        transform.RotateAround(center.transform.position, Vector3.down, 20 * Time.deltaTime);
    }
}

周回を制御するのはtransform.RotateAroundです。引数一つ目は周回の中心として設定するオブジェクトの座標です。今回はGameObjectから取得する設定にしています。引数二つ目が回転軸です。デフォルトだとY軸がUP方向なはずですので、Vector3.downでY軸方向に回転します。引数三つ目が回転速度です。速度調整はTime.deltaTimeの係数(上記だと20)を調整して変えてください。

Step4 : スクリプトのアタッチと中心設定

C#スクリプトをSharkに対してドラッグ&ドロップでアタッチした後、Inspecterから先ほどのOrbitスクリプトのCenterとして、人型キャラのEthanを設定します。

Step5 : 実行して確認

Gameを開始してみます。

無事にSharkがぐるぐる周回して狙われてる感がでました。

その他

途中でミスしたところとして、transform.RotateAroundでVector3.upとしていたらサメが後ろ向きに周回してしまいました。Vector3.downにすることで、前進してくれました。また、速度を-にすることでも同様に解消しました。このあたりはオブジェクトの配置の仕方にもよるので、動かして微調整というところです。

-Unity

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Unity】Package ManagerでMy Assetsが取得できないときの対処

Contents1 目的2 環境3 症状4 対処法 目的 Unity のPackage Manager でMy Assetesを取得したり、Unity Asset Storeにうまく繋らない症状が発生 …

【Unity】ゲームパッド(logicool F310)でキャラクターを操作する

Contents1 概要2 環境3 使用したゲームパッドについて4 Step1 : PCへのF310の接続5 Step2 : UnityのInput Managerの設定5.1 「走る」の設定5.2 …

UnityでSerializedObjectNotCreatableException:Object at index 0 is nullが出た時の対処法

Contents1 発生状況1.1 実行環境2 対処その13 対処その24 まとめ 発生状況 UnityでFreeのAnimationクリップをeditから編集し、その後Gameをスタートしたところ、 …

【Unity】キャラクターに抜刀させる方法

Contents1 概要2 完成イメージ3 Step1 : 必要Assetの準備3.1 刀の入手3.2 抜刀アニメーションの入手4 Step2 : 抜刀させる方式4.1 アニメーションの再生5 刀の移 …

【Unity】キャラクター操作その4 –  レーザーソードを持たせてON/OFFする

Contents1 概要2 環境3 Step1 : レーザーソードの調達4 Step2 : レーザーソードを持たせる5 Step3 : レーザーソードをON/OFFする6 まとめ 概要 前回はRobo …

言語切り替え

カテゴリー