Смена значения при входе и выходе из триггера - Форум Игроделов
Вт, 04 Фев 2025, 03:00 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Смена значения при входе и выходе из триггера
dostalitionДата: Ср, 31 Июл 2013, 17:16 | Сообщение # 1
 
Сообщений: 155
Награды: 0
Репутация: 9
Статус: Offline
Хочу , чтобы переменная изменялась при входе в триггер и возвращалась к обратному значение при выходе из него ... Написал такой код
Код
#pragma strict

function OnTriggerEnter()
{   
GameObject.Find("IGROK").GetComponent(CharacterController).slopeLimit = 90;   
}

function OnTriggerExit()
{   
GameObject.Find("IGROK").GetComponent(CharacterController).slopeLimit = 60;   
}
При входе значение меняется на 90, но при выходе не возвращается к 60 ... Подскажите , ЛЮДИ ДОБРЫЕ, в чём ошибка ... И можно ли это реализовать через ELSE, но без проверки каждый кадр ? ... smile


Сообщение отредактировал dostalition - Ср, 31 Июл 2013, 17:55
 
СообщениеХочу , чтобы переменная изменялась при входе в триггер и возвращалась к обратному значение при выходе из него ... Написал такой код
Код
#pragma strict

function OnTriggerEnter()
{   
GameObject.Find("IGROK").GetComponent(CharacterController).slopeLimit = 90;   
}

function OnTriggerExit()
{   
GameObject.Find("IGROK").GetComponent(CharacterController).slopeLimit = 60;   
}
При входе значение меняется на 90, но при выходе не возвращается к 60 ... Подскажите , ЛЮДИ ДОБРЫЕ, в чём ошибка ... И можно ли это реализовать через ELSE, но без проверки каждый кадр ? ... smile

Автор - dostalition
Дата добавления - 31 Июл 2013 в 17:16
ЛевшаДата: Ср, 31 Июл 2013, 17:42 | Сообщение # 2
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Код

var igrCc : CharacterController;

function Start () {
     if (!igrCc)  igrCc = gameObject.Find("IGROK").GetComponent(CharacterController)
}
function OnTriggerEnter(col : Collider) {   
     if (col.tag == "Igrok")  igrCc.slopeLimit = 90;   
}  
function OnTriggerEnter(col : Collider) {   
     if (col.tag == "Igrok")  igrCc.slopeLimit = 60;   
}


Почему у тебя ентер отлавливает а ексит нет, не знаю, смотри конструкцию своих триггеров...


X.cor.R (Prologue)
 
Сообщение
Код

var igrCc : CharacterController;

function Start () {
     if (!igrCc)  igrCc = gameObject.Find("IGROK").GetComponent(CharacterController)
}
function OnTriggerEnter(col : Collider) {   
     if (col.tag == "Igrok")  igrCc.slopeLimit = 90;   
}  
function OnTriggerEnter(col : Collider) {   
     if (col.tag == "Igrok")  igrCc.slopeLimit = 60;   
}


Почему у тебя ентер отлавливает а ексит нет, не знаю, смотри конструкцию своих триггеров...

Автор - Левша
Дата добавления - 31 Июл 2013 в 17:42
dostalitionДата: Пн, 05 Авг 2013, 14:19 | Сообщение # 3
 
Сообщений: 155
Награды: 0
Репутация: 9
Статус: Offline
Написал вот так
Код
var box : GameObject;

         function OnTriggerEnter(myTrigger : Collider)     
{
      if (myTrigger.gameObject.name == "IGROK")      
           
        box.renderer.enabled = false;
      }
         
         function OnTriggerExit(myTrigger : Collider)     
{
      if (myTrigger.gameObject.name == "IGROK")
            
         box.renderer.enabled = true;
      }
- всё нормально работает ... А когда вот так
Код
#pragma strict

var box : GameObject;

         function OnTriggerEnter(myTrigger : Collider)     
{
      if (myTrigger.gameObject.name == "IGROK") {     
           
        GameObject.Find("IGROK").GetComponent(CharacterController).slopeLimit = 90;     
        box.renderer.enabled = false;
        }
      }
         
         function OnTriggerExit(myTrigger : Collider)     
{
      if (myTrigger.gameObject.name == "IGROK"){
          
         GameObject.Find("IGROK").GetComponent(CharacterController).slopeLimit = 60;     
         box.renderer.enabled = true;
         }
      }
то, при входе в триггер, рендер отключается и значение меняется на 90, а при выходе ни рендер не включается, ни значение не меняется в скрипте ...

Добавлено (31 Июл 2013, 23:31)
---------------------------------------------
Попробуйте Кто-нибудь этот slopeLimit изменить у Себя через вход/выход триггера ... Другие скрипты работают: рендер отключается и включается, цвет эмбиента меняется туда и обратно, пока не пытаюсь изменить slopeLimit, а с ним только при входе получается сотрудничать ...

Добавлено (02 Авг 2013, 14:15)
---------------------------------------------
Через дебаг.лог, поставленный после строчки
Код
GameObject.Find("IGROK").GetComponent(CharacterController).slopeLimit = 90;
, в функции ЭНТЕР , при вхождении выдаёт сообщения НЕПЕРЕСТАВАЯ, тогда как, в том же скрипте, но без изменения слоупЛимит, как и положено, показывает сообщение раз при входе и раз при выходе ... Видимо проблема уже на этом этапе ...

Добавлено (02 Авг 2013, 19:14)
---------------------------------------------
Числовые значения переменных из других скриптов меняются как надо, дело именно в ЧарактерКонтроллере и этой "слоупЛимит" ...

Добавлено (02 Авг 2013, 19:46)
---------------------------------------------
Создал , для пробы, такой простейший скрипт под названием CHISLO

Код
#pragma strict

var CH : int;

function Start () {

CH = 1;

}

, далее создал такой
Код
var UGOL : CHISLO;

function OnTriggerEnter(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK") {  
UGOL.CH = 90;     
Debug.Log ("Вход");
}
}

function OnTriggerExit(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK"){
UGOL.CH = 60;
Debug.Log ("Выход");
}
}
и в нём всё работает , как надо : СН меняется на 90 один раз, при входе и на 60 один раз при выходе ... Так же и с дебагом ... Т.е. сам скрипт этот нормально пашет, а вот проблема в ЧарактерКонтроллере ... Его же даже из редактора нельзя открыть для редактирования , EditScript отсутствует строчка ...

Добавлено (02 Авг 2013, 19:49)
---------------------------------------------
Как, вообще, можно отредактировать CharacterController ? Или , хоть, посмотреть как там что написано, может что проясниться ...

Добавлено (02 Авг 2013, 19:54)
---------------------------------------------
В справке есть только это http://docs.unity3d.ru/ScriptReference/CharacterController-slopeLimit.html , но оно не помогает ...

Добавлено (02 Авг 2013, 20:04)
---------------------------------------------
Теперь выяснил, что проблема не в СС, а именно в слоупЛимит, т.к. вот такой скрипт работает как надо

Код
var UGOL : CharacterController;

function OnTriggerEnter(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK") {  
UGOL.stepOffset = 10;     
Debug.Log ("Вход");
}
}

function OnTriggerExit(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK"){
UGOL.stepOffset = 5;
Debug.Log ("Выход");
}
}

Добавлено (05 Авг 2013, 14:19)
---------------------------------------------
Вопрос решил добавлением условия нажатия клавиши ...

Код
var CC : CharacterController;

function OnTriggerStay(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK" && Input.GetKeyDown(KeyCode.F)){  
CC.slopeLimit = 90;     
Debug.Log ("Вход");
}}

function OnTriggerExit(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK"){
CC.slopeLimit = 60;
Debug.Log ("Выход");
}}


Сообщение отредактировал dostalition - Пт, 02 Авг 2013, 14:15
 
СообщениеНаписал вот так
Код
var box : GameObject;

         function OnTriggerEnter(myTrigger : Collider)     
{
      if (myTrigger.gameObject.name == "IGROK")      
           
        box.renderer.enabled = false;
      }
         
         function OnTriggerExit(myTrigger : Collider)     
{
      if (myTrigger.gameObject.name == "IGROK")
            
         box.renderer.enabled = true;
      }
- всё нормально работает ... А когда вот так
Код
#pragma strict

var box : GameObject;

         function OnTriggerEnter(myTrigger : Collider)     
{
      if (myTrigger.gameObject.name == "IGROK") {     
           
        GameObject.Find("IGROK").GetComponent(CharacterController).slopeLimit = 90;     
        box.renderer.enabled = false;
        }
      }
         
         function OnTriggerExit(myTrigger : Collider)     
{
      if (myTrigger.gameObject.name == "IGROK"){
          
         GameObject.Find("IGROK").GetComponent(CharacterController).slopeLimit = 60;     
         box.renderer.enabled = true;
         }
      }
то, при входе в триггер, рендер отключается и значение меняется на 90, а при выходе ни рендер не включается, ни значение не меняется в скрипте ...

Добавлено (31 Июл 2013, 23:31)
---------------------------------------------
Попробуйте Кто-нибудь этот slopeLimit изменить у Себя через вход/выход триггера ... Другие скрипты работают: рендер отключается и включается, цвет эмбиента меняется туда и обратно, пока не пытаюсь изменить slopeLimit, а с ним только при входе получается сотрудничать ...

Добавлено (02 Авг 2013, 14:15)
---------------------------------------------
Через дебаг.лог, поставленный после строчки
Код
GameObject.Find("IGROK").GetComponent(CharacterController).slopeLimit = 90;
, в функции ЭНТЕР , при вхождении выдаёт сообщения НЕПЕРЕСТАВАЯ, тогда как, в том же скрипте, но без изменения слоупЛимит, как и положено, показывает сообщение раз при входе и раз при выходе ... Видимо проблема уже на этом этапе ...

Добавлено (02 Авг 2013, 19:14)
---------------------------------------------
Числовые значения переменных из других скриптов меняются как надо, дело именно в ЧарактерКонтроллере и этой "слоупЛимит" ...

Добавлено (02 Авг 2013, 19:46)
---------------------------------------------
Создал , для пробы, такой простейший скрипт под названием CHISLO

Код
#pragma strict

var CH : int;

function Start () {

CH = 1;

}

, далее создал такой
Код
var UGOL : CHISLO;

function OnTriggerEnter(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK") {  
UGOL.CH = 90;     
Debug.Log ("Вход");
}
}

function OnTriggerExit(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK"){
UGOL.CH = 60;
Debug.Log ("Выход");
}
}
и в нём всё работает , как надо : СН меняется на 90 один раз, при входе и на 60 один раз при выходе ... Так же и с дебагом ... Т.е. сам скрипт этот нормально пашет, а вот проблема в ЧарактерКонтроллере ... Его же даже из редактора нельзя открыть для редактирования , EditScript отсутствует строчка ...

Добавлено (02 Авг 2013, 19:49)
---------------------------------------------
Как, вообще, можно отредактировать CharacterController ? Или , хоть, посмотреть как там что написано, может что проясниться ...

Добавлено (02 Авг 2013, 19:54)
---------------------------------------------
В справке есть только это http://docs.unity3d.ru/ScriptReference/CharacterController-slopeLimit.html , но оно не помогает ...

Добавлено (02 Авг 2013, 20:04)
---------------------------------------------
Теперь выяснил, что проблема не в СС, а именно в слоупЛимит, т.к. вот такой скрипт работает как надо

Код
var UGOL : CharacterController;

function OnTriggerEnter(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK") {  
UGOL.stepOffset = 10;     
Debug.Log ("Вход");
}
}

function OnTriggerExit(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK"){
UGOL.stepOffset = 5;
Debug.Log ("Выход");
}
}

Добавлено (05 Авг 2013, 14:19)
---------------------------------------------
Вопрос решил добавлением условия нажатия клавиши ...

Код
var CC : CharacterController;

function OnTriggerStay(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK" && Input.GetKeyDown(KeyCode.F)){  
CC.slopeLimit = 90;     
Debug.Log ("Вход");
}}

function OnTriggerExit(myTrigger : Collider) {

if (myTrigger.gameObject.name == "IGROK"){
CC.slopeLimit = 60;
Debug.Log ("Выход");
}}

Автор - dostalition
Дата добавления - 05 Авг 2013 в 14:19
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025