【Unity】Unity Playground のスクリプトを見てみよう~Follow Target~

FollowTarget Unity
FollowTarget

Unity で簡単に2Dゲームを作ることができる Unity Playground アセットを触っていきます。

Follow Target

説明

Follow Target スクリプトは、指定したターゲットをオブジェクトが追いかけます。

使ってみる

Project ウィンドウの Asteroid2 イメージを Hierarchy ウィンドウにドラッグ&ドロップします。

Asteroid2
Asteroid2

Asteroid2 を複製して、適当に配置します。

Asteroid2 複製
Asteroid2 複製

複製した Asteroid2 に FollowTarget スクリプトをドラッグ&ドロップします。
Rigidbody2D の Gravity Scale は 0 にします。
Follow Target の Target にターゲットとなる Asteroid2 を指定します。
Playボタンを押します。
Inspector で Asteroid2 の Position を移動すると、複製した Asteroid2 が追いかけてきます。

Asteroid2 を追いかける
Asteroid2 を追いかける

スクリプトを見る

FollowTarget スクリプトをダブルクリックすると、ソースコードを見ることができます。

using UnityEngine;
using System.Collections;

[AddComponentMenu("Playground/Movement/Follow Target")]
[RequireComponent(typeof(Rigidbody2D))]
public class FollowTarget : Physics2DObject
{
	// This is the target the object is going to move towards
	public Transform target;

	[Header("Movement")]
	// Speed used to move towards the target
	public float speed = 1f;

	// Used to decide if the object will look at the target while pursuing it
	public bool lookAtTarget = false;

	// The direction that will face the target
	public Enums.Directions useSide = Enums.Directions.Up;
	
	// FixedUpdate is called once per frame
	void FixedUpdate ()
	{
		//do nothing if the target hasn't been assigned or it was detroyed for some reason
		if(target == null)
			return;

		//look towards the target
		if(lookAtTarget)
		{
			Utils.SetAxisTowards(useSide, transform, target.position - transform.position);
		}
		
		//Move towards the target
		rigidbody2D.MovePosition(Vector2.Lerp(transform.position, target.position, Time.fixedDeltaTime * speed));

	}
}

↓こちらのメソッドを使用して、オブジェクトをターゲットの座標に移動させています。
Rigidbody2D.MovePosition(Vector2 position);
MovePosition メソッドの使い方は、スクリプトリファレンスを参照しましょう。

Rigidbody2D-MovePosition - Unity スクリプトリファレンス
Rigidbody オブジェクトを指定する位置へ移動します

まとめ

FollowTarget スクリプトは、指定したターゲットをオブジェクトが追いかける機能を持っています。
簡単な機能を組み合わせることにより、複雑なことができるようになります。
1個1個使いこなせるようになっていきましょう。

コメント

タイトルとURLをコピーしました