3, 下記のスクリプトを作成し、Playerにアタッチする
Mover
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Mover : MonoBehaviour
{
[SerializeField] Transform taget;
// Update is called once per frame
void Update()
{
GetComponent<NavMeshAgent>().destination = taget.position;
}
}
5, Meshに含めないobjectなどは、staticにチェックをして選択し、bakeする
クリックで操作する
1, クリックでRayを出す。下記スクリプトを書く。
Mover
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Mover : MonoBehaviour
{
[SerializeField] Transform taget;
Ray lastRay; //変数の宣言
// Update is called once per frame
void Update()
{
// 下記を書く
if (Input.GetMouseButtonDown(0))
{
lastRay = Camera.main.ScreenPointToRay(Input.mousePosition);
}
Debug.DrawLine(lastRay.origin, lastRay.direction * 100);
//
GetComponent<NavMeshAgent>().destination = taget.position;
}
}
2, クリックした箇所にPlayerを移動させる
Mover
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Mover : MonoBehaviour
{
[SerializeField] Transform taget;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
MoveToCursor();
}
}
private void MoveToCursor()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
bool hasHit = Physics.Raycast(ray, out hit);
if (hasHit)
{
GetComponent<NavMeshAgent>().destination = hit.point;
}
}
}