Почему у меня эта ошибка на unit3d, а не на visual studio - PullRequest
0 голосов
/ 18 мая 2019
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class enemyAI : MonoBehaviour
{
    //Distance entre le joueur et le zombie
    private float Distance;

    // cible du zombie
    public Transform Target;

    //distance de poursuite
    public float chaseRange = 10;

    //portée des attaques
    public float attackRange = 2.2f;

    //Cooldown des attaques
    public float attackRepeatTime = 1;
    private float attackTime;

    //Dégats infligés
    public float TheDammage;

    //Agent de navigation
    private UnityEngine.AI.NavMeshAgent agent;

    //Animation du zombie
    private Animator animation;

    void Start()
    {
        agent = gameObject.GetComponent<UnityEngine.AI.NavMeshAgent>();
        animation = gameObject.GetComponent<Animator>();
        attackTime = Time.time;
    }

    void Update()
    {
        //on cherche le joueur en permanence
        Target = GameObject.Find("Player").transform;

        //Calcul de la distance zombie player pour effectuée diverse action
        Distance = Vector3.Distance(Target.position, transform.position);

        //Quand player loin = idle
        if (Distance > chaseRange)
        {
            idle();
        }
        //Quand zombien'est pas asser proche pour attaquer
        if (Distance < chaseRange && Distance > attackRange)
        {
            chase();
        }
        //Quand zombie peut attaquer
        if (Distance < attackRange)
        {
            Attack();
        }

        //poursuite
        void chase()
        {
            animation.Play("walk");
            agent.destination = Target.position;
        }
        //combat
        void Attack()
        {
            // empêche le zombie de traverser le player
            agent.destination = transform.position;
            //si pas de cooldown
            if (Time.time > attackTime)
            {
                animation.Play("Hit");
                Target.GetComponent<PlayerInventory> ().ApplyDamage(TheDammage);
                Debug.Log("Le zombie a frappé" + TheDammage + "point de   dégats");
                attackTime = Time.time + attackRepeatTime;
            }
         }

        //idle
        void idle()
        {
            animation.Play("idle");
        }
    }
}

У меня есть ошибки в модуле по поводу моего кода, но у меня нет ошибок в visual studio

Asset / врагаAI.cs (67,9): ошибка CS1547: Ключевое слово 'void'не может использоваться в этом контексте

Актив / врага AI.cs (67,18): ошибка CS1525: неожиданный символ '(', ожидание ',', ''; 'или' = '

Asset / врага AI.cs (93,0): ошибка CS1525: неожиданный символ '}'

Я ничего не пробовал, потому что действительно не понимал.

1 Ответ

1 голос
/ 18 мая 2019

Вы не закрываете свою функцию обновления, прежде чем начать свою функцию погони. Добавьте еще один "}" после завершения функции обновления, чтобы правильно завершить эту функцию перед объявлением новых, например так:

        ...
        //Quand zombie peut attaquer
        if (Distance < attackRange)
        {
            Attack();
        }
    }   //This properly ends your Update function
        //Now we can declare the next function

    //poursuite
    void chase()
        ...

В целом, если вы правильно поддерживаете отступы в своих файлах, проблемы такого рода должны быть более очевидными.

...