Unity で簡単に2Dゲームを作ることができる Unity Playground アセットを触っていきます。
Follow Target
説明
Follow Target スクリプトは、指定したターゲットをオブジェクトが追いかけます。
使ってみる
Project ウィンドウの Asteroid2 イメージを Hierarchy ウィンドウにドラッグ&ドロップします。
Asteroid2 を複製して、適当に配置します。
複製した Asteroid2 に FollowTarget スクリプトをドラッグ&ドロップします。
Rigidbody2D の Gravity Scale は 0 にします。
Follow Target の Target にターゲットとなる Asteroid2 を指定します。
Playボタンを押します。
Inspector で Asteroid2 の Position を移動すると、複製した 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個使いこなせるようになっていきましょう。
コメント