タップした位置に移動

動画のような動きを実現します

2017/11/02更新,次々タップしてゴールをどんどん変更できるようにした

ここからダウンロードできます

using UnityEngine;
using System.Collections;
using System;

public class tapMove : MonoBehaviour {

	//AIの変数用
	UnityEngine.AI.NavMeshAgent agent;

	//hit情報(タップ先)情報の格納用
	RaycastHit hit;

	//タップ用レイの準備
	Ray ray;

	[SerializeField, HeaderAttribute ("circlePrefabをここにアサイン")]
	public GameObject circlePre;

	//レイヤーマスクでタップを無視するレイヤー設定用
	LayerMask mylayerMask;

	//アニメーターの変数用
	Animator animator;


	//初期化
	void Start () {
		agent = GetComponent<UnityEngine.AI.NavMeshAgent>();//AIをこのスクリプトがあるゲームオブジェクトから探す
		animator = GetComponent<Animator> ();//このゲームオブジェクトからアニメーターを探す
		int layerMask = LayerMask.GetMask(new string[] {"Default"});//レイヤーマスクの設定
		mylayerMask = layerMask;//これ何だっけ?
	}


	//毎回処理します
	void Update () {

	
			// 左クリックしたときに、
			if (Input.GetMouseButtonDown (0)) {
				// マウスの位置からRayを発射して、
				ray = Camera.main.ScreenPointToRay (Input.mousePosition);
				// 物体にあたったら、
			if (Physics.Raycast (ray, out hit, 30f, mylayerMask)) {
					// その場所に、Nav Mesh Agentをアタッチしたオブジェクトを移動させる
					agent.SetDestination (hit.point);

					// "Run"アニメーションに遷移
					//	animator.SetBool ("Wak", true);
					spawnPrefab ();
				}       


		}
		// 目的地とプレイヤーとの距離が1以下になったら、
		if (Vector3.Distance(hit.point, transform.position) < 1.0f) {

		}
	}

	//ターゲットマーカーを表示
	void spawnPrefab(){

		string delPreviusGO = circlePre.name;//Prefabの名前を取得する
		try{
		GameObject deathObj =  GameObject.Find (delPreviusGO);//Prefab名のゲームオブジェクトがあったら
			Destroy(deathObj);//それを消す=つまり目的地に到着前にタップして行き先を変更した時用
		}catch(NullReferenceException e) {//見つからなかった時の処理(特に何もしていない)
			Debug.Log ("noGO");
		}

		Vector3 mypos ;//行き先の座標設定用
		float myPosy = hit.point.y + 0.1f;//若干高い位置にマーカー表示させる
		mypos = new Vector3 (hit.point.x, myPosy, hit.point.z);//Yだけ少し高くした座標作成
		GameObject circleGO = Instantiate(circlePre, mypos, circlePre.transform.rotation) as GameObject;//Prefabを生成する
		circleGO.name = circlePre.name;//Prefabでなくゲームオブジェクトにして名前を設定する(上で名前で検索して消すために設定いている)

	}


}

元ネタはこちらのスクリプトを参考にしています

また,Prefab側にはこのスクリプトをあてて,IsTriggerをONにしています

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class triggerDestroy : MonoBehaviour {
	Animation anim;
	bool animCheck;
	// Use this for initialization
	void Start () {
		anim = gameObject.GetComponent<Animation> ();
		animCheck = false;//noPlayning
	}
	
	// Update is called once per frame
	void Update () {
		if (animCheck) {
			if (!anim.isPlaying) {
				print ("end");
				animCheck = false;//noanimPlay
				Destroy(this.gameObject);
			}
		}
		
	}
	void OnTriggerEnter(Collider other) {
		//Debug.Log ("ON");
		if (!anim.isPlaying) {
		anim.Play ();
		animCheck = true;//Playing
		}

	}


}

ターゲットの赤い輪はPhotoshopで作成し,Planeにテクスチャで貼付

パッケージのダウンロード(ここ