Получить и изменить компонент

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Получить и изменить компонент

Сообщение ArtUni3d 27 июл 2011, 04:22

У меня есть анимированая дверь, на которой висит скрипт doorTriger

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class doorTriger : MonoBehaviour {
       
public int active;

        void Update () {
                if (active == 1)
                        animation.Play();
                else
                        animation.Stop();
        }
}


И есть персонаж, из которого летит RaycastHit, при попадании которого в дверь, я хочу передать её "active" переменной, значение 1.

Дал персонажу такой скрипт

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Character2 : MonoBehaviour {
       
        public RaycastHit hit;
        public doorTriger script;

        void Update () {
                RaycastHit hit;
                var fwd = transform.TransformDirection (Vector3.forward);
                Physics.Raycast(transform.position, fwd, out hit);
                Debug.DrawLine(transform.position, hit.transform.position);
                doorTriger = GetComponent("doorTriger") as doorTriger;
                doorTriger.active(1);
        }
}


Сложности с GetComponent. Взял из справочника, но он даже в таком виде выдает ошибки. К тому-же, я не знаю где надо подставить "hit" чтобы он брал компонент из объекта на который смотрит персонаж.
Посмотрел еще вариант в одном туторе, но там вообще ничего не работает.
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Получить и изменить компонент

Сообщение Neodrop 27 июл 2011, 05:11

Компонент вы в вашем коде, получаете из своего собственного объекта, а не из того, в который тыркнули лучом.
hit.transform.GetComponent<ВашаХреньТут>();

Пройдите туториалы, в самом деле. :-?

З.Ы. Очень неверно называть методы с маленькой буквы. Никто вам не запрещает, но это китайская грамота, а не код. Уверяю.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Получить и изменить компонент

Сообщение ArtUni3d 27 июл 2011, 13:42

Хорошо, буду с большой:)

Пробовал делать как в уроке, вот так:

Синтаксис:
Используется csharp
doorTriger dt = (doorTriger)hit.GetComponent("doorTriger");
dt.active(1);


Но способ написания GetComponent как-то не такой как в справочнике, и ничего не работает.
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Получить и изменить компонент

Сообщение Zaicheg 27 июл 2011, 13:59

И не должно работать. У RaycastHit нет метода GetComponent. Вызовите его через hit.transform, например
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Получить и изменить компонент

Сообщение ArtUni3d 27 июл 2011, 14:16

аа, действительно.

Сделал вот так:

Синтаксис:
Используется csharp
DoorTriger dt = (DoorTriger)hit.transform.GetComponent("DoorTriger");
dt.active(1);


Осталась одна ошибка:
The member: 'DoorTriger.active' cannot be used as method or delegate
Как быть?
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Получить и изменить компонент

Сообщение seaman 27 июл 2011, 14:34

А Вы вообще программировать то умеете?
Как присваиваются значения переменным знаете? Похоже что нет.
Может все же так:
Синтаксис:
Используется csharp
dt.active = 1;
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Получить и изменить компонент

Сообщение ArtUni3d 27 июл 2011, 14:52

Эмдаааа... Да вот, "умел"...
В уроке было (1); а я автору поверил. Оказалось, вредно смотреть бредо-уроки =\
Спасибо. Ошибки прошли.

Но сам компонент все равно не берется :(
В инспекторе у скрипта есть переменная Script, но она всегда None (Door Triger)
При наведении на дверь со скриптом DoorTriger - она его не берет.

Вот полный код:

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Character : MonoBehaviour {
       
        public RaycastHit hit;
        public DoorTriger script;

        void Update () {
                RaycastHit hit;
                var fwd = transform.TransformDirection (Vector3.forward);
                Physics.Raycast(transform.position, fwd, out hit);
                Debug.DrawLine(transform.position, hit.transform.position);
                DoorTriger dt = (DoorTriger)hit.transform.GetComponent("DoorTriger");
                dt.active = 1;
        }
}


В чем может быть проблема?
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Получить и изменить компонент

Сообщение seaman 27 июл 2011, 14:58

В невнимательности.
Как у Вас называется скрипт двери?- "doorTrigger"
Какой скрипт Вы пытаетесь взять?- "DoorTrigger"
Разницу не чувствуете?
Хотя, возможно Вы меня просто запутали с этими боьлшими/маленькими буквами.

ЗЫ:
1. Зачем Вам два RaycastHit?
2. Если я чего не путаю, то вот это: var fwd = transform.TransformDirection (Vector3.forward); можно спокойно заменить на это: var fwd = transform.forward
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Получить и изменить компонент

Сообщение ArtUni3d 27 июл 2011, 15:15

Лишнее из кода убрал, точно.
DoorTriger я уже переименовал и там и там. Повесил Door Triger На обычный кубик, с него оно ловит. А с двери нет.
Но у меня дверь это объект внутри которого 2 объекта (рама и сама дверь). А Raycast ударяется либо в раму либо в саму дверь, но не в объект целиком (на котором висит анимация и скрипт). Как это можно исправить?
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12

Re: Получить и изменить компонент

Сообщение ArtUni3d 27 июл 2011, 15:24

Аа, просто добавить коллайдер, его не было.
Все, всем большое спасибо, за ответы на идиотские вопросы)
Аватара пользователя
ArtUni3d
UNITрон
 
Сообщения: 249
Зарегистрирован: 27 апр 2011, 22:12


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 26