• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed [C#] Problem ze skryptem patrolowania Unity 3D

Object Storage Arubacloud
0 głosów
327 wizyt
pytanie zadane 11 grudnia 2018 w C# przez misterbrow Nowicjusz (140 p.)
zamknięte 11 grudnia 2018 przez misterbrow

Witam Wszystkich dopiero uczę się programować i tworze system  SI dla swojej gry składająca się z wielu skryptów ale system patrolowania nie chce działać.

using UnityEngine;
using System.Collections;

public class PatrolState : IenemyAI
{

    EnemyState enemy;
    int nextWayPoint = 0;

    public PatrolState(EnemyState enemy)
    {
        this.enemy = enemy;
    }

    public void UpdateActions()
    {
        Watch();
        Patrol();
    }
    void Watch()
    {
        RaycastHit hit;
        if(Physics.Raycast(enemy.transform.position, -enemy.transform.forward, out hit, enemy.patrolRange))
        {
            if (hit.collider.CompareTag("Player"))
            {
                Debug.Log("Zauważyłem wroga!");
                enemy.chaseTarget = hit.transform;
                ToChaseState();
            }
        }
    }
    void Patrol()
    {
        enemy.navMeshAgent.destination = enemy.waypoints[nextWayPoint].position;
        enemy.navMeshAgent.Resume();
        if(enemy.navMeshAgent.remainingDistance <= enemy.navMeshAgent.stoppingDistance
            && !enemy.navMeshAgent.pathPending)
        {
            nextWayPoint = (nextWayPoint + 1) % enemy.waypoints.Length;
        }
    }

    public void OnTriggerEnter(Collider enemy)
    {
        if (enemy.gameObject.CompareTag("Player"))
        {
            ToAlertState();
        }
    }

    public void ToPatrolState()
    {
        Debug.Log("I'm already patrolling!");
    }

    public void ToAttackState()
    {
        enemy.currentState = enemy.attackState;
    }

    public void ToAlertState()
    {
        enemy.currentState = enemy.alertState;
    }

    public void ToChaseState()
    {
        enemy.currentState = enemy.chaseState;
    }

}

Oto ten Skrypt. Wiem że coś nie chce działać naliczanie się tych waypoint ale nie wiem dlaczego bo domyślnie jest 0 po to żeby brał pierwszy element który jest waypointem niestety linijka gdzie wykrywa czy dotarł na miejsce i naliczyć kolejny punkt nie idzie do niego i dalej jest w tym samym miejscu a jak go przesunę za pomocą silnika wraca na miejsce. jest jeszcze inny skrypt który odpowiada za zmianę stanów i jest tam zdefiniowana publiczna wartość waypoint.

using UnityEngine;
using UnityEngine.AI;
using System.Collections;

public class EnemyState : MonoBehaviour
{
    public Transform[] waypoints;

 To jest początek tego skryptu gdzie jest zdefiniowana ta wartość. Z góry dzięki za pomoc.

komentarz zamknięcia: Podczas pisania pytania znalazłem swój błąd dlatego chce zablokować

Podobne pytania

0 głosów
0 odpowiedzi 142 wizyt
pytanie zadane 24 października 2018 w C# przez koyoo Początkujący (340 p.)
0 głosów
0 odpowiedzi 154 wizyt
pytanie zadane 13 maja 2019 w C# przez cyrus33 Użytkownik (680 p.)
0 głosów
0 odpowiedzi 285 wizyt
pytanie zadane 4 maja 2017 w C# przez Patryk8090 Użytkownik (520 p.)

92,556 zapytań

141,403 odpowiedzi

319,559 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...