Unity|ホーミング(追従)するオブジェクトの作り方

シェアする

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

そのような時に、簡単にホーミングするオブジェクトを作る方法を紹介します。

今回は「ホーミングするオブジェクトからプレイヤーが逃げる」という処理を作成しました。

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

はじめに

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

(ロケットがプレイヤー、光球が追従オブジェクト)

スクリーンショット 2015-12-12 2.46.28

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

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


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を変更してみてください。

Unity テキストのSortingLayerを変更する方法
今回は、Unity内のMeshTextを使った際に、他のスプライトと被った場合どうしてもテキストが後ろに回ってしまうという状態に陥ったので解決策を模索し...

まとめ

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

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


2015/12/23追記:

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


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

ではまた。

%d人のブロガーが「いいね」をつけました。