アクションゲームやRPGを作っていると、「ホーミング」するオブジェクトを作りたくなりますよね。
今回は、Unityで簡単にホーミングするオブジェクトを作る方法を紹介します。
ロケットオブジェクトとパーティクルを使って「ホーミングするオブジェクトからプレイヤーが逃げる」という処理を作成しました。
では、早速追従するオブジェクトの作り方に入ります。
はじめに
今回使うオブジェクトは以下のようなものになっています。
光っているのがホーミングするオブジェクトだね
一定速度でプレイヤーを追いかけるというような処理になっています。
このような追従するオブジェクトを簡単に作れます。
実際の動作(動画)
光球はUnityのParticle Systemを使っています。
から導入してください。
次に、ホーミングするオブジェクトに追加するコードを作成します。
追従・ホーミングさせるコード
まず以下のようなコードを作成してください。
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の引数は
というようになっています。
自分の処理に合わせて変更してみてください。
私の場合、追従するオブジェクトの速度は2.0fに指定しました。
また、追従するオブジェクトに「Trail Renderer」を追加しておくと、進んだ軌道が残るようになってホーミングっぽくなるかもしれません。
注意点としては、今回作成したホーミングオブジェクトはParticleSystemなので、背景の後ろに回ってしまったり、「Trail Renderer」の方が上に描画されてしまう可能性があります。
そのような時はSorting Layerを変更する方法を参考にしてParticle SystemのSorting Layerを変更してみてください。
まとめ
この方法を使えば、簡単に追従するオブジェクトを作成することができました。
今回、実際の動作がわかりにくいかもしれないので、後日ホーミングが実装されているステージの動画を追記したいと思います。
冒頭で動画の紹介をしています。
UnityでのParticle Systemはとても使いやすく、綺麗に仕上がるので是非使いこなしてみてください。
ではまた。