Вопрос-[ответ] по Unity
|
|
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
Artem93region | Дата: Суббота, 14 Ноября 2015, 12:15 | Сообщение # 7421 |
был не раз
Сейчас нет на сайте
| Спасибо за ответ но есть ещё вопросы: 1)Тег игроку присвоил, создал скрипт и повесил на триггер, создал boolean переменную. В OnTriggerEnter проверку тоже сделал и в OnTriggerExit аналогично. Вот скрипт:
Код using UnityEngine; using System.Collections;
public class TriggerForDestroy : MonoBehaviour {
public GameObject click; public bool _visable;
void OnTriggerEnter(Collider other){ if(other.CompareTag("Player")){ click.SetActive(true); click.GetComponent<take>().enabled=true; Debug.Log("OnTriggerEnter"); _visable = true; } } void OnTriggerExit(Collider other){ if(other.CompareTag("Player")){
click.SetActive(false); click.GetComponent<take>().enabled=false; Debug.Log("OnTriggerExit"); _visable = false; } } }
2) Далее присвоил префабу свой тег (я кстати от проверки на нажатие по UI Image из нового гуи решил отказаться, а решил использовать UI Butoon повесив на него скрипт и при нахождении игрока в триггере поставил отображение этой самой кнопки) а вот на кнопке я и завис:
using UnityEngine; using System.Collections;
public class take : MonoBehaviour {
void Start () {
}
public void Method () {
GameObject[] gos; gos = GameObject.FindGameObjectsWithTag("TriggerPapers");
if(gos._visable == true){
Debug.Log("visable == true");
} } }
тут юнити ругается на _visable
Error CS1061: "System.Array" не содержит определение для "_visable". Не удалось найти метод расширения "_visable", принимающий первый аргумент типа "System.Array" (пропущено использование директивы или ссылка на сборку?) (CS1061) (Assembly-CSharp)
и ещё как потом сделать чтобы удалился именно тот обьект у которого поменялась эта переменнныя, чтобы не все сразу?
Сообщение отредактировал Artem93region - Суббота, 14 Ноября 2015, 12:21 |
|
| |
SkorpyX | Дата: Суббота, 14 Ноября 2015, 13:57 | Сообщение # 7422 |
участник
Сейчас нет на сайте
| Artem93region, во-первых, в вашем скрипте gos это массив GameObjectов, там вы обращаетесь напрямую к массиву, а нужно перебирать его в цикле. Во-вторых _visable - это переменная вашего скрипта, а не GameObjectа, следовательно нужно обращаться к скрипту через GetComponent. Пример на js :
Код var gos : GameObject[] = GameObject.FindGameObjectsWithTag("TriggerPapers");
for (gs in gos) { if (gs.GetComponent.<TriggerForDestroy>()._visable == true) { Debug.Log("visable == true"); } }
Сообщение отредактировал SkorpyX - Суббота, 14 Ноября 2015, 13:57 |
|
| |
Artem93region | Дата: Суббота, 14 Ноября 2015, 15:07 | Сообщение # 7423 |
был не раз
Сейчас нет на сайте
| Перевёл на CS получилось так:
Код GameObject[] gos = GameObject.FindGameObjectsWithTag("TriggerPapers");
foreach(object gs in gos) { if (gs.GetComponent.<"TriggerPapers">()._visable == true) { Debug.Log("visable == true"); }
Сдесь на сколько я правильно понял, в первой строке обращаемся ко всем обьектам с тегом "TriggerPapers" далее выбираются все объекты в массиве, где к каждому можно обратиться как "gs"
foreach(object gs in gos)
затем в условии указывается этот самый gs потом его компонент, в котором указывается триггер и проверяется условие, но снова ошибка
using UnityEngine; using System.Collections;
public class take : MonoBehaviour {
void Start () { }
public void Method () {
GameObject[] gos = GameObject.FindGameObjectsWithTag("TriggerPapers"); foreach(GameObject gs in gos) { if (gs.GetComponent.<"TriggerPapers">()._visable == true) //Error CS1001: Ожидался идентификатор (CS1001) (Assembly-CSharp) Error CS1525: Недопустимый терм ')' в выражении (CS1525) (Assembly-CSharp) Error CS1026: ожидалась ) (CS1026) (Assembly-CSharp) { Debug.Log("visable == true"); } } } }
далее если меняю
if (gs.GetComponent.<"TriggerPapers">()._visable == true)
на
if (gs.GetComponent.(TriggerPapers)._visable == true)
то пишет только
Error CS1001: Ожидался идентификатор (CS1001) (Assembly-CSharp)
гуглю гуглю не могу разобрать как исправить?
Сообщение отредактировал Artem93region - Суббота, 14 Ноября 2015, 15:40 |
|
| |
NEBR | Дата: Суббота, 14 Ноября 2015, 15:28 | Сообщение # 7424 |
почти ветеран
Сейчас нет на сайте
| Цитата Artem93region ( ) if (gs.GetComponent.(TriggerPapers)._visable == true;) дружище, зачем здесь точка с запятой? )) Пиши просто if (gs.GetComponent.(TriggerPapers)._visable)
King Size #Gamiron12
|
|
| |
Artem93region | Дата: Суббота, 14 Ноября 2015, 15:31 | Сообщение # 7425 |
был не раз
Сейчас нет на сайте
| NEBR, да я за был убрать это я экспериментировал) спасибо за замечание поправил без неё так же ругается
Сообщение отредактировал Artem93region - Суббота, 14 Ноября 2015, 15:51 |
|
| |
SkorpyX | Дата: Суббота, 14 Ноября 2015, 15:45 | Сообщение # 7426 |
участник
Сейчас нет на сайте
| Цитата Artem93region ( ) gs.GetComponent.<"TriggerPapers">()._visable == true) Кавычки лишние
Сообщение отредактировал SkorpyX - Суббота, 14 Ноября 2015, 15:47 |
|
| |
Artem93region | Дата: Суббота, 14 Ноября 2015, 15:53 | Сообщение # 7427 |
был не раз
Сейчас нет на сайте
| Цитата SkorpyX ( ) gs.GetComponent.<"TriggerPapers">()._visable == true)
Кавычки лишние пробовал тоже их убирать, те же ошибки остаються
Сообщение отредактировал Artem93region - Суббота, 14 Ноября 2015, 15:54 |
|
| |
SkorpyX | Дата: Суббота, 14 Ноября 2015, 15:55 | Сообщение # 7428 |
участник
Сейчас нет на сайте
| Цитата Artem93region ( ) пробовал тоже их убирать, тогда аж 6 ошибок появляется TriggerPapers - это название вашего префаба, должно быть :
Код gs.GetComponent.<TriggerForDestroy>()._visable == true;
|
|
| |
Artem93region | Дата: Суббота, 14 Ноября 2015, 17:37 | Сообщение # 7429 |
был не раз
Сейчас нет на сайте
| Цитата SkorpyX ( ) пробовал тоже их убирать, тогда аж 6 ошибок появляется
TriggerPapers - это название вашего префаба, должно быть : Код
gs.GetComponent.<TriggerForDestroy>()._visable == true;
а я тег указал) ща попробуюДобавлено (14 ноября 2015, 16:07) --------------------------------------------- всё равно не получается те же ошибки и название префаба выделено красным Добавлено (14 ноября 2015, 17:37) --------------------------------------------- Вот сделал пак:
http://rghost.ru/8MKr4wqmm
Сообщение отредактировал Artem93region - Суббота, 14 Ноября 2015, 16:04 |
|
| |
beril | Дата: Суббота, 14 Ноября 2015, 23:37 | Сообщение # 7430 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Ну у тебя Visual Studio ? Он же должен показывать где ошибка в какой строке
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
Artem93region | Дата: Суббота, 14 Ноября 2015, 23:50 | Сообщение # 7431 |
был не раз
Сейчас нет на сайте
| Цитата beril ( ) Ну у тебя Visual Studio ? Он же должен показывать где ошибка в какой строке
ошибка в этой строке:
if(gs.GetComponent.<TriggerForDestroy>()._visable == true){ }
Error CS1001: Ожидался идентификатор (CS1001) (Assembly-CSharp) Error CS1525: Недопустимый терм ')' в выражении (CS1525) (Assembly-CSharp) Error CS1026: ожидалась ) (CS1026) (Assembly-CSharp)Добавлено (14 ноября 2015, 23:50) --------------------------------------------- всё не могу сделать проверку переменной и кстати редактирую в юньковском редакторе
|
|
| |
wasterman | Дата: Воскресенье, 15 Ноября 2015, 03:25 | Сообщение # 7432 |
частый гость
Сейчас нет на сайте
| Привет! Хочу уточнить, вот этот код пускает луч из точки в точку RaycastHit hit; Ray ray = new Ray(transform.position, player.transform.position - transform.position); а вот этот пускает допустим на единицу выше (метр) RaycastHit hit; Ray ray = new Ray(transform.position+ Vector3.up, player.transform.position - transform.position+ Vector3.up); вот сам вопрос, как пустить луч ниже? Писал Ray ray = new Ray(transform.position+ Vector3.up/2, player.transform.position - transform.position+ Vector3.up/2); Но такой вариант не всегда срабатывает правильно. брал в скобки и код отказывался работать Ray ray = new Ray(transform.position+ (Vector3.up/2), player.transform.position - transform.position+ (Vector3.up/2)); так как же все таки пустить этот луч выше чем из нижней точки?
Рок форева! Не графоМан! Холодный космос.
|
|
| |
Pocifik | Дата: Воскресенье, 15 Ноября 2015, 14:23 | Сообщение # 7433 |
участник
Сейчас нет на сайте
| Artem93region, точки не должно быть перед "<".
|
|
| |
Artem93region | Дата: Воскресенье, 15 Ноября 2015, 23:23 | Сообщение # 7434 |
был не раз
Сейчас нет на сайте
| Всё, на конец-то мне помогли разобраться, в итоге всё разместилось в одном скрипте, а так же поменялся сам подход к решению данной задаче, в общем заработало)
|
|
| |
allods | Дата: Среда, 25 Ноября 2015, 22:14 | Сообщение # 7435 |
почти ветеран
Сейчас нет на сайте
| Ребят помогите правильно повернуть 2Д объект через рейкаст + угол рейкаста к поверхности Есть объект кидаю рейкаст в 4 стороны: верх , низ, лево, право Если есть соприкосновение лучей то выбираю самый близкий/короткий . Дальше нахожу Vector2 reflect и угол падения луча на коллайдер. Есть такие данные. Но иногда смотрит совсем в другую сторону. Дело в угле луча. он всегда в позитиве. Я не могу понять как правильно вычислять и вертеть
Цитата Vector2 incomingVec = hits [0].point - new Vector2 (transform.position.x, transform.position.y); reflectVec = Vector2.Reflect (incomingVec, hits [0].normal); angleHit = Vector2.Angle (reflectVec, hits [0].normal); вот рефлект и угол а как дальше вертеть
|
|
| |
JessyStorm | Дата: Четверг, 26 Ноября 2015, 10:29 | Сообщение # 7436 |
заслуженный участник
Сейчас нет на сайте
| Гайс, если кто-нибудь разбирается в шейдерном коде в юньке, интересуют fragment&vertex шейдеры, черканите в личку или скайп - psihrus1, спасибо.
https://www.artstation.com/artist/jessystorm
|
|
| |
Excelsiorer | Дата: Вторник, 01 Декабря 2015, 13:47 | Сообщение # 7437 |
частый гость
Сейчас нет на сайте
| Движение реализованно стандартным FirstPersonController. Как мне из другого скрипта изменить скорость движения персонажа в FirstPersonController?
|
|
| |
xMoonGuarDx | Дата: Вторник, 01 Декабря 2015, 14:56 | Сообщение # 7438 |
участник
Сейчас нет на сайте
| Excelsiorer, передать ссылку на контроллер в изменяющий скрипт.
|
|
| |
Excelsiorer | Дата: Вторник, 01 Декабря 2015, 15:05 | Сообщение # 7439 |
частый гость
Сейчас нет на сайте
| xMoonGuarDx, А как дальше изменить скорость? Просто обратиться к переменным в скрипте FirstCharacterController не получается, выдает ошибку
|
|
| |
MANMANA | Дата: Среда, 02 Декабря 2015, 20:16 | Сообщение # 7440 |
почти ветеран
Сейчас нет на сайте
| Цитата xMoonGuarDx ( ) xMoonGuarDx, А как дальше изменить скорость? Просто обратиться к переменным в скрипте FirstCharacterController не получается, выдает ошибку информативненько http://answers.unity3d.com/questio....ri.html http://answers.unity3d.com/questio....pe.html
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |