2021年7月14日水曜日

#2 オブジェクトを動かしてみる

こんにちは!ぴちおです。! 

 キャラクターがいないと始まらないので
 まずは床とキャラクターをセット 
 ヒエラルキー→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;
}
}
}
}


これで動くのですが、
このままだとわかりづらいので
カメラを修正
 ヒエラルキー→Main Cameraをクリック
インスペクターの値を変更。
位置:x0,y40,z0
回転:x90,y0,z0

上空から見下ろす感じになります。
 

[参考にさせていただいたサイト]

0 件のコメント: