キャラクターがいないと始まらないので
まずは床とキャラクターをセット
ヒエラルキー→3Dオブジェクト→平面をクリック
そのままだと動かすのにも狭いので
少し大きくします。
Transformm→スケールでx 3, y 0, z 1にセット
あと、名前を「ground」に変更しておきます。
続いて、キャラクターをセット
とりあえずはオブジェクトそのまま
ヒエラルキー→3Dオブジェクト→カプセル
名前を「player」
タグを「player」
Transformm→位置をx 0, y 1, z 0にセット
今回はクリックした場所に移動させたいので
NavMeshを使っていきます。
ウィンドウ→AI→ナビゲーション
groundを選択して
ナビゲーションタブのNavigation staticにチェックを入れる
ベイクタブのベイクをクリック
今回床しかないので真っ青になるだけ、
障害物とかを設定しておくとそこを避けるような形になります。
続いてクリックした場所に移動するように設定してきます。
まずは、「player」を選択して、
NavMeshエージェントを追加
インスペクター→コンポーネントの追加、
navと入れると出てくる「ナビメッシュエージェント」を追加
次、スクリプト作成
インスペクター→コンポーネントの追加
新しいスクリプトをクリック、
名前を「playerConntroller」とします。
プロジェクトに作成したスクリプトが表示されてます。
後でわからなくならないようにフォルダ分します。
プロジェクトタブの下の➕をクリック、
フォルダをクリック
名称を「script」をします。
先ほど作成した「playerConntroller」をこのフォルダにドラッグ&ドロップ
続いて、「playerConntroller」をダブルクリックしてエディタで開きます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class playerController : MonoBehaviour
{
// ナビゲーションエージェント
private NavMeshAgent agent;
// Start is called before the first frame update
void Start()
{
agent = GetComponent<NavMeshAgent>();
agent.SetDestination(transform.position);
}
// Update is called once per frame
void Update()
{
// マウスクリックまたはmouseDownModeがOffの時マウスの位置を移動する位置にする
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100))
{
agent.destination = hit.point;
}
}
}
}
0 件のコメント:
コメントを投稿