【Unity】ホーミング(追従)するオブジェクトの作り方!敵キャラに使えるかも
こんにちはクリアメモリです!
Unityで、アクションゲームやRPGを作っていると、「ホーミング」するオブジェクトを作りたくなります。
そのような時に、簡単にホーミングするオブジェクトを作る方法を紹介します。
今回は「ホーミングするオブジェクトからプレイヤーが逃げる」という処理を作成しました。では、早速追従するオブジェクトの作り方に入ります。
はじめに
今回使うオブジェクトは以下のようなものになっています。
(ロケットがプレイヤー、光球が追従オブジェクト)
一定速度でプレイヤーを追いかけるというような処理になっています。
このような追従するオブジェクトを簡単に作れます。
2015/12/23追記:
追従するオブジェクトがわかりやすいように動画を撮影しました。
これを見ると、ホーミングしているのがわかりやすくなると思います。
光球はUnityのParticle Systemを使っています。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の引数は
(移動させるオブジェクトの座標, 目標になるオブジェクト(ポイント)の座標, 追従する速度 * Time.deltaTime);
というようになっています。
自分の処理に合わせて変更してみてください。 私の場合、追従するオブジェクトの速度は2.0fに指定しました。
また、追従するオブジェクトに「Trail Renderer」を追加しておくと、進んだ軌道が残るようになってホーミングっぽくなるかもしれません。
注意点としては、今回作成したホーミングオブジェクトはParticleSystemなので、背景の後ろに回ってしまったり、「Trail Renderer」の方が上に描画されてしまう可能性があります。
そのような時はSorting Layerを変更する方法を参考にしてParticle SystemのSorting Layerを変更してみてください。
https://clrmemory.com/unity/text-sortinglayer-change/
まとめ
この方法を使えば、簡単に追従するオブジェクトを作成することができました。
今回、実際の動作がわかりにくいかもしれないので、後日ホーミングが実装されているステージの動画を追記したいと思います。
2015/12/23追記:
冒頭で動画の紹介をしています。
UnityでのParticle Systemはとても使いやすく、綺麗に仕上がるので是非使いこなしてみてください。
ではまた。