【Unity】ホーミング(追従)するオブジェクトの作り方!敵キャラに使えるかも

アクションゲームやRPGを作っていると、「ホーミング」するオブジェクトを作りたくなりますよね。

 

今回は、Unityで簡単にホーミングするオブジェクトを作る方法を紹介します。

ロケットオブジェクトとパーティクルを使って「ホーミングするオブジェクトからプレイヤーが逃げる」という処理を作成しました。

 

では、早速追従するオブジェクトの作り方に入ります。

はじめに

 

今回使うオブジェクトは以下のようなものになっています。

 

ロケットがプレイヤー
光っているのがホーミングするオブジェクトだね

 

20171116214613

 

一定速度でプレイヤーを追いかけるというような処理になっています。

このような追従するオブジェクトを簡単に作れます。

 

実際の動作(動画)

 

追記
追従するオブジェクトがわかりやすいように動画を撮影しました。
これを見ると、ホーミングしているのがわかりやすくなると思います。

 

 

光球はUnityのParticle Systemを使っています。

 

Point
Unity > Assets > Import Package > ParticleSystem

から導入してください。

 

次に、ホーミングするオブジェクトに追加するコードを作成します。

 

追従・ホーミングさせるコード

 

まず以下のようなコードを作成してください。

 

using UnityEngine;
using System.Collections;

public class Homing : MonoBehaviour {

    GameObject Player;
    GameObject homingObj;
    public float Speed;

    // Use this for initialization
    void Start () {
        Player = GameObject.Find ("Player");
        homingObj = GameObject.Find ("Homing");
    }

    // Update is called once per frame
    void Update () {
        this.transform.position = Vector2.MoveTowards (this.transform.position,new Vector2(Player.transform.position.x, Player.transform.position.y), Speed * Time.deltaTime);
    }
}

 

基本的にはプレイヤーとホーミングのオブジェクトを取得した後、Vector2.MoveTowardsで追従させています。

 

コードの解説

 

MoveTowardsの引数は

Point
(移動させるオブジェクトの座標, 目標になるオブジェクト(ポイント)の座標, 追従する速度 * Time.deltaTime);

というようになっています。

 

自分の処理に合わせて変更してみてください。

私の場合、追従するオブジェクトの速度は2.0fに指定しました。

 

また、追従するオブジェクトに「Trail Renderer」を追加しておくと、進んだ軌道が残るようになってホーミングっぽくなるかもしれません。

注意点としては、今回作成したホーミングオブジェクトはParticleSystemなので、背景の後ろに回ってしまったり、「Trail Renderer」の方が上に描画されてしまう可能性があります。

 

そのような時はSorting Layerを変更する方法を参考にしてParticle SystemのSorting Layerを変更してみてください。

 

まとめ

 

この方法を使えば、簡単に追従するオブジェクトを作成することができました。

今回、実際の動作がわかりにくいかもしれないので、後日ホーミングが実装されているステージの動画を追記したいと思います。

 

冒頭で動画の紹介をしています。

UnityでのParticle Systemはとても使いやすく、綺麗に仕上がるので是非使いこなしてみてください。

 

 

ではまた。

過去にレビューしたアイテム