Re: Хочу зібрати команду для створення проектів на движку unity3d.
Скріпт скину.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Робота → Пропоную роботу → Хочу зібрати команду для створення проектів на движку unity3d.
Скріпт скину.
using UnityEngine;
using System.Collections;
public class ai : MonoBehaviour
{
    public Transform[] waypoint = new Transform[5];
    private Transform _target; 
    NavMeshAgent _agent; 
    public int N;
    int i1;
    void Start()
    {
        i1 = Random.Range(0, N);
        _target = waypoint[i1];
        _agent = (NavMeshAgent)this.GetComponent("NavMeshAgent"); 
    }
    void Update(Collider NPC)
    {
         _agent.SetDestination(_target.transform.position); 
         if (Vector3.Distance(transform.position, /*waypoint[i1].transform.position*/ _target.transform.position) <= 1f)
         {
             Start();
         }
    }
}
Простий скріпт, але завдяки йому НПЦ можуть рандовно ходить до точок і обходить перешкоди.
Саме робота цього скріпта показана в відео яке я скидав раніше.
то ви не розумієте значення слова "скрипт"?
Ну так що?
перший раз бачу, щоб Start, котрий призначений для ініціалізації, викликали в Update, котрий викликається кожен кадр.
до того ж в старті отримується компонент, котрий наче один раз отримали, та й використовуємо, так нііі, ми будемо кожний кадр шукати той компонент, ліл.
Та й шо то за Update такий? Звідки там взявся аргумент? Воно хоч компілюється?
Мене не вразив Ваш кід.
перший раз бачу, щоб Start, котрий призначений для ініціалізації, викликали в Update, котрий викликається кожен кадр.
до того ж в старті отримується компоненUpdata, рий наче один раз отримали, та й використовуємо, так нііі, ми будемо кожний кадр шукати той компонент, ліл.
Та й шо то за Update такий? Звідки там взявся аргумент? Воно хоч компілюється?
Мене не вразив Ваш кід.
В цілому код робе нормально.
Щас розберу його структуру:
-массив waypoint хранить кординати п'яти обєктів;
-перемена _target лишня і її можна замінити на waypoint[i1];
-далі іде перемена якій ми пізніше присвоєм компонент NavMeshAgent;
-в функції старт все понятно думаю;
-в Updata спочатку ми заставимо нпц рухатися в сторуну _target;
-дальше іде проверка чи відстань між нпц і обєктом равна або менша за 1, якщо да то ми визиваєм функцію старт в якій рандовно вибираються нові значенія і заново іде функція Updata, таким чином нпц буде ходить рандовно до пяти різних обєктів.
Якщо щось неясно то питайте.
Цей скріпт я показував в відео яке скидав в цій темі раніше.
Програмірування це така штука де самий дурний варіант може оказатися в полне робочим і нормальним.
Щось у Вас не дуже виходить не вживати суржик.
На форумі є вкладка користувачі і там знайдіть Faraon, то він поділяє ваш підхід до діла, може погодиться на співпрацю. Він навіть колись оцим цікавився.
Ну принані я намагаюсь не вживати суржик.
Ну принані я намагаюсь не вживати суржик.
Хто зацікавений в пропозиції то пишіть.
На форумі є вкладка користувачі і там знайдіть Faraon, то він поділяє ваш підхід до діла, може погодиться на співпрацю. Він навіть колись оцим цікавився.
Це все є хорошо, але є одне але, він заходив останій раз в 10.09.15.
перший раз бачу, щоб Start, котрий призначений для ініціалізації, викликали в Update, котрий викликається кожен кадр.
до того ж в старті отримується компонент, котрий наче один раз отримали, та й використовуємо, так нііі, ми будемо кожний кадр шукати той компонент, ліл.
Та й шо то за Update такий? Звідки там взявся аргумент? Воно хоч компілюється?
Мене не вразив Ваш кід.
Омг, ви просто не очікували, що людина видасть вам хоч якийсь код, почали тролити. А коли це трапилось, щоб не впасти лицем у багнюку, вирішили увімкнути "експерта". 
З форуму видно, що місцями не знаєте/не розумієте самих основ, натомість намагаєтесь повчати інших і на кожному кроці тикати у пхпешників (бо ж самі намагаєтесь осилити математику). І будь-ласка, наступного разу коли надумаєте висловити свою думку, зробіть це зі свого аккаунта, а не з "coder'ів" різних..
(с) Ваши даказатєльства нє даказатєльства.
Все, зливаюсь перед тру програмером:(
Але ж код справді не працює. Зробив я такий самий метод Update, розраховуючи на те, що вміст методу просто не буде виконуватись. Unity ж дає помилку:
Script error (gun): Update() can not take parameters.
Якщо ТС хоче знайти людей в команду, то йому варто б викласти робочий скрипт. І свій, тому що пан Ярмоленко постійно пише Updata і наводить на думку, що він не писав навіть це.
Але ж код справді не працює. Зробив я такий самий метод Update, розраховуючи на те, що вміст методу просто не буде виконуватись. Unity ж дає помилку:
Script error (gun): Update() can not take parameters.
Якщо ТС хоче знайти людей в команду, то йому варто б викласти робочий скрипт. І свій, тому що пан Ярмоленко постійно пише Updata і наводить на думку, що він не писав навіть це.
В функції Updata() неповино бути аргументів.
Є і упрощоний варіант:
using UnityEngine;
using System.Collections;
public class ai : MonoBehaviour
{
    public Transform[] waypoint = new Transform[5];//кординати обєктів до яких буде ходить НПС
    Transform _target;
    NavMeshAgent _agent; 
    void Start()
    {
       _agent = (NavMeshAgent)this.GetComponent("NavMeshAgent");//присваюємо компонент NavMeshAgent 
    }
    void Update()
    {
        bool patryl = true;
        do
        {
            _target=waypoint[Random.Range(1, waypoint.Length)];//случайно вибираємо до якого обєкта буде іти нпс
            _agent.SetDestination(_target.transform.position);//змушуємо нпс іти до нашого обєкта
        } while (patryl == false);
    }
}