Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 16.05.2014, 13:42   #31
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Активация скрипта по требованию

Вообще так, там где цифра "1" - это тот самый объект, на котором висит скрипт, который мы тут пытаемся разобрать.
Там, где цифра "2" - это бот с ИИ, на котором висит другой скрипт Java, который требуется отключить с помощью 1-ого скрипта.
При всём этом нет никаких консольных ошибок и запуск игры даётся безприпятственно
Миниатюры
Нажмите на изображение для увеличения
Название: coas.jpg
Просмотров: 127
Размер:	276.7 Кб
ID:	20540  
(Offline)
 
Ответить с цитированием
Старый 16.05.2014, 14:11   #32
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,496
Написано 2,953 полезных сообщений
(для 5,217 пользователей)
Ответ: Активация скрипта по требованию

На pacan221 есть колайдер?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 16.05.2014, 14:31   #33
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Активация скрипта по требованию

хах, ну да, естественно) стал бы я проводить проверку на коллайдер)
не знаю играет ли это роли, но помимо коллайдера на нём ещё и CharacterController, его присутсвие обусловленно скриптом "AI2", коллайдер сделал дабы лучом попадать и из него вычислять сам объект, в котором обрубать скрипт
(Offline)
 
Ответить с цитированием
Старый 16.05.2014, 16:14   #34
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,496
Написано 2,953 полезных сообщений
(для 5,217 пользователей)
Ответ: Активация скрипта по требованию

CharacterController это тоже коллайдер. В общем хз что у тебя там такое, объект не находится в слое Ignore Raycast? Debug.DrawRay правильное направление показывает? Звук играет?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 16.05.2014, 16:57   #35
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Активация скрипта по требованию

Звук играет, но вот луч почему то не отрисовывается
(Offline)
 
Ответить с цитированием
Старый 16.05.2014, 16:59   #36
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,496
Написано 2,953 полезных сообщений
(для 5,217 пользователей)
Ответ: Активация скрипта по требованию

Попробуй рисовать луч каждый Update? хотя если звук работает, то должно быть все нормально...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 16.05.2014, 19:38   #37
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Активация скрипта по требованию

да не, с лучём всё в поряде оказалось, ну как и предполагалось, что дело не в нём
(Offline)
 
Ответить с цитированием
Старый 16.05.2014, 19:47   #38
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Активация скрипта по требованию

лады, а как вместо отключение вызвать удаление компонента?
(Offline)
 
Ответить с цитированием
Старый 16.05.2014, 20:26   #39
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Активация скрипта по требованию

решившись покапаться во 2 скрипте, начал думать что проблема таиться в нём, т.к. мне удалось углядеть, что галочка то в инспекторе всё таки снимается) но скрипт продолжает работать
var speed 3.0;
var 
rotationSpeed 5.0;
var 
shootRange 15.0;
var 
attackRange 30.0;
var 
shootAngle 4.0;
var 
dontComeCloserRange 5.0;
var 
delayShootTime 0.35;
var 
pickNextWaypointDistance 2.0;
var 
target Transform;

private var 
lastShot = -10.0;


// Make sure there is always a character controller
@script RequireComponent (CharacterController)

function 
Start () {
    
// Auto setup player as target through tags
    
if (target == null && GameObject.FindWithTag("Player"))
        
target GameObject.FindWithTag("Player").transform;

    
Patrol();
}


function 
Patrol () {
    var 
curWayPoint AutoWayPoint.FindClosest(transform.position);
    while (
true) {
        var 
waypointPosition curWayPoint.transform.position;
        
// Are we close to a waypoint? -> pick the next one!
        
if (Vector3.Distance(waypointPositiontransform.position) < pickNextWaypointDistance)
            
curWayPoint PickNextWaypoint (curWayPoint);

        
// Attack the player and wait until
        // - player is killed
        // - player is out of sight        
        
if (CanSeeTarget ())
            
yield StartCoroutine("AttackPlayer");
        
        
// Move towards our target
        
MoveTowards(waypointPosition);
        
        
yield;
    }
}


function 
CanSeeTarget () : boolean {
    if (
Vector3.Distance(transform.positiontarget.position) > attackRange)
        return 
false;
        
    var 
hit RaycastHit;
    if (
Physics.Linecast (transform.positiontarget.positionhit))
        return 
hit.transform == target;

    return 
false;
}

function 
Shoot () {
    
// Start shoot animation
    
animation.CrossFade("fire"0.3);

    
// Wait until half the animation has played
    
yield WaitForSeconds(delayShootTime);
    
    
// Fire gun
    
BroadcastMessage("Fire");
    
    
// Wait for the rest of the animation to finish
    
yield WaitForSeconds(animation["fire"].length delayShootTime);
}

function 
AttackPlayer () {
    var 
lastVisiblePlayerPosition target.position;
    while (
true) {
        if (
CanSeeTarget ()) {
            
// Target is dead - stop hunting
            
if (target == null)
                return;

            
// Target is too far away - give up    
            
var distance Vector3.Distance(transform.positiontarget.position);
            if (
distance shootRange 3)
                return;
            
            
lastVisiblePlayerPosition target.position;
            if (
distance dontComeCloserRange)
                
MoveTowards (lastVisiblePlayerPosition);
            else
                
RotateTowards(lastVisiblePlayerPosition);

            var 
forward transform.TransformDirection(Vector3.forward);
            var 
targetDirection lastVisiblePlayerPosition transform.position;
            
targetDirection.0;

            var 
angle Vector3.Angle(targetDirectionforward);

            
// Start shooting if close and play is in sight
            
if (distance shootRange && angle shootAngle)
                
yield StartCoroutine("Shoot");
        } else {
            
yield StartCoroutine("SearchPlayer"lastVisiblePlayerPosition);
            
// Player not visible anymore - stop attacking
            
if (!CanSeeTarget ())
                return;
        }

        
yield;
    }
}

function 
SearchPlayer (position Vector3) {
    
// Run towards the player but after 3 seconds timeout and go back to Patroling
    
var timeout 3.0;
    while (
timeout 0.0) {
        
MoveTowards(position);

        
// We found the player
        
if (CanSeeTarget ())
            return;

        
timeout -= Time.deltaTime;
        
yield;
    }
}

function 
RotateTowards (position Vector3) {
    
SendMessage("SetSpeed"0.0);
    
    var 
direction position transform.position;
    
direction.0;
    if (
direction.magnitude 0.1)
        return;
    
    
// Rotate towards the target
    
transform.rotation Quaternion.Slerp (transform.rotationQuaternion.LookRotation(direction), rotationSpeed Time.deltaTime);
    
transform.eulerAngles Vector3(0transform.eulerAngles.y0);
}

function 
MoveTowards (position Vector3) {
    var 
direction position transform.position;
    
direction.0;
    if (
direction.magnitude 0.5) {
        
SendMessage("SetSpeed"0.0);
        return;
    }
    
    
// Rotate towards the target
    
transform.rotation Quaternion.Slerp (transform.rotationQuaternion.LookRotation(direction), rotationSpeed Time.deltaTime);
    
transform.eulerAngles Vector3(0transform.eulerAngles.y0);

    
// Modify speed so we slow down when we are not facing the target
    
var forward transform.TransformDirection(Vector3.forward);
    var 
speedModifier Vector3.Dot(forwarddirection.normalized);
    
speedModifier Mathf.Clamp01(speedModifier);

    
// Move the character
    
direction forward speed speedModifier;
    
GetComponent (CharacterController).SimpleMove(direction);
    
    
SendMessage("SetSpeed"speed speedModifierSendMessageOptions.DontRequireReceiver);
}

function 
PickNextWaypoint (currentWaypoint AutoWayPoint) {
    
// We want to find the waypoint where the character has to turn the least

    // The direction in which we are walking
    
var forward transform.TransformDirection(Vector3.forward);

    
// The closer two vectors, the larger the dot product will be.
    
var best currentWaypoint;
    var 
bestDot = -10.0;
    for (var 
cur AutoWayPoint in currentWaypoint.connected) {
        var 
direction Vector3.Normalize(cur.transform.position transform.position);
        var 
dot Vector3.Dot(directionforward);
        if (
dot bestDot && cur != currentWaypoint) {
            
bestDot dot;
            
best cur;
        }
    }
    
    return 
best;

(Offline)
 
Ответить с цитированием
Старый 17.05.2014, 06:36   #40
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,496
Написано 2,953 полезных сообщений
(для 5,217 пользователей)
Ответ: Активация скрипта по требованию

Тут все на корутинах, должно отключаться... а других скриптов на нем нет?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 17.05.2014, 12:03   #41
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Активация скрипта по требованию

Есть, AIAnimation, по идеи эти 2 скрипта вместе работают, т.к. 1 гоняет его по вейпоинтам, другой анимирует
var minimumRunSpeed = 1.0;

function Start () {
    
// Set all animations to loop
    
animation.wrapMode WrapMode.Loop;

    
// Except our action animations, Dont loop those
    
animation["Take 001"].wrapMode WrapMode.Once;
    
    
// Put idle and run in a lower layer. They will only animate if our action animations are not playing
    
animation["Take 001"].layer = -1;
    
animation["Take 001"].layer = -1;
    
animation["Take 001"].layer = -1;
    
    
animation.Stop();
}

function 
SetSpeed (speed float) {
    if (
speed minimumRunSpeed)
        
animation.CrossFade("Take 001");
    else
        
animation.CrossFade("Take 001");

(Offline)
 
Ответить с цитированием
Старый 17.05.2014, 12:08   #42
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,496
Написано 2,953 полезных сообщений
(для 5,217 пользователей)
Ответ: Активация скрипта по требованию

попробуй еще дописать
ston.animation.Stop();
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 17.05.2014, 13:09   #43
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Активация скрипта по требованию

Assets/��������/�������/AIAnimation.js(15,9): BCE0005: Unknown identifier: 'ston'.
(Offline)
 
Ответить с цитированием
Старый 17.05.2014, 13:11   #44
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Активация скрипта по требованию

я бы уже если честно воспользовался бы каким нибудь другим способом реализации ИИ прохожих, если бы нашёл) я хотел сделать принцип, что люди ходят по путям, и если я начинаю битву с ними, то скрипт вейпоинтов отключается, и включается скрипт поведения драки какой нибудь, но вот что то не заладилось
(Offline)
 
Ответить с цитированием
Старый 17.05.2014, 13:30   #45
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,496
Написано 2,953 полезных сообщений
(для 5,217 пользователей)
Ответ: Активация скрипта по требованию

Это надо было дописать туда же, где отключается AI2
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 10:04.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com