1

2 つのエラーがあります。

最初のエラーは次のとおりです。

MissingComponentException: 「ThirdPersonController」ゲーム オブジェクトに接続された「NavMeshAgent」はありませんが、スクリプトがそれにアクセスしようとしています。おそらく、NavMeshAgent をゲーム オブジェクト「ThirdPersonController」に追加する必要があります。または、コンポーネントを使用する前に、コンポーネントがアタッチされているかどうかをスクリプトで確認する必要があります。

Patroll.Update () (Assets/My Scripts/Patroll.cs:41)

Patroll.Update は、私が作成した Patroll.cs というスクリプト ファイルにあります。

using UnityEngine;
using System.Collections;

public class Patroll : MonoBehaviour {

    public Transform[] points;
    private int destPoint = 0;
    private NavMeshAgent agent;

    // Use this for initialization
    void Start () {

        agent = GetComponent<NavMeshAgent>();

        // Disabling auto-braking allows for continuous movement
        // between points (ie, the agent doesn't slow down as it
        // approaches a destination point).
        agent.autoBraking = false;

        GotoNextPoint();

    }

    void GotoNextPoint() {
        // Returns if no points have been set up
        if (points.Length == 0)
            return;

        // Set the agent to go to the currently selected destination.
        agent.destination = points[destPoint].position;

        // Choose the next point in the array as the destination,
        // cycling to the start if necessary.
        destPoint = (destPoint + 1) % points.Length;
    }


    void Update () {
        // Choose the next destination point when the agent gets
        // close to the current one.
        if (agent.remainingDistance < 0.5f)
            GotoNextPoint();
    }
}

41 行目は次のとおりです。

if (agent.remainingDistance < 0.5f)

このスクリプト Patroll.cs を Hierarchy から ThirdPersonController にドラッグしました。

その後、別のエラーが発生し、Patroll.cs スクリプトを作成する前にもこのエラーが発生しました。

「GetRemainingDistance」は、NavMesh に配置されたアクティブなエージェントでのみ呼び出すことができます。UnityEngine.NavMeshAgent:get_remainingDistance() UnityStandardAssets.Characters.ThirdPerson.AICharacterControl:Update() (Assets/Standard Assets/Characters/ThirdPersonCharacter/Scripts/AICharacterControl.cs:31)

このエラーはスクリプト AICharacterControl.cs にあり、これは Unity スクリプトであり、Hierarchy の ThirdPersonController にも関連しています。

31 行目:

if (agent.remainingDistance > agent.stoppingDistance)

それを修正するためにこれまでにやろうとしたことは団結しています。Component > Navigation > NavMesh Agent のメニューをクリックしました

これで、ThirdPersonController に Nav Nesh Agent が追加され、ThirdPersonController のインスペクターで Nav Nesh Agent 部分を確認できます。

しかし、エラーはまだ存在します。

これは AICharacterControl.cs スクリプトです

using System;
using UnityEngine;

namespace UnityStandardAssets.Characters.ThirdPerson
{
    [RequireComponent(typeof (NavMeshAgent))]
    [RequireComponent(typeof (ThirdPersonCharacter))]
    public class AICharacterControl : MonoBehaviour
    {
        public NavMeshAgent agent { get; private set; }             // the navmesh agent required for the path finding
        public ThirdPersonCharacter character { get; private set; } // the character we are controlling
        public Transform target;                                    // target to aim for


        private void Start()
        {
            // get the components on the object we need ( should not be null due to require component so no need to check )
            agent = GetComponentInChildren<NavMeshAgent>();
            character = GetComponent<ThirdPersonCharacter>();

            agent.updateRotation = false;
            agent.updatePosition = true;
        }


        private void Update()
        {
            if (target != null)
                agent.SetDestination(target.position);

            if (agent.remainingDistance > agent.stoppingDistance)
                character.Move(agent.desiredVelocity, false, false);
            else
                character.Move(Vector3.zero, false, false);
        }


        public void SetTarget(Transform target)
        {
            this.target = target;
        }
    }
}

エラーを修正する方法がわかりません。

4

2 に答える 2