 |
Unity Мультиплатформенный инструмент для разработки игр |
25.11.2011, 10:46
|
#646
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Фак по Юнити.
А что,Unity не может рисовать тени не объекте,если он с вывернутыми нормалями(бегаем по кубику с нормалями внутрь)
|
(Offline)
|
|
25.11.2011, 10:59
|
#647
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Отключи этому кубу Cast Shadows (повлияет на направленный источник света). Точечные источники работают нормально.
|
(Offline)
|
|
25.11.2011, 16:55
|
#648
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Фак по Юнити.
Вот у меня есть дверь,есть скрипт для неё,есть объект который эту дверь открывает-закрывает.По сути скрипт через public привязывается к объекту у которого должна быть переменная,напимер bool STATUS.Как сделать так,чтоб скрипт выполнялся в зависимости от переменной(как найти переменную)
|
(Offline)
|
|
25.11.2011, 16:56
|
#649
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
через точку: объект.свойство
|
(Offline)
|
|
25.11.2011, 17:04
|
#650
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Фак по Юнити.
Assets/Scripts/Door.cs(15,30): error CS1061: Type `UnityEngine.GameObject' does not contain a definition for `Status' and no extension method `Status' of type `UnityEngine.GameObject' could be found (are you missing a using directive or an assembly reference?)
|
Никак не хотит через точку....
using UnityEngine;
using System.Collections;
public class Door : MonoBehaviour {
public GameObject Activator;
// Use this for initialization
void Start () {
}
private int anim=0;
// Update is called once per frame
void Update () {
if(Activator.status){
anim=1;
if(!animation.isPlaying && anim==1) animation.Play("Open");
else{
if(!animation.isPlaying && anim==1) animation.Play("Close");
anim=0;
}
}
}
}
|
(Offline)
|
|
25.11.2011, 17:18
|
#651
|
ПроЭктировщик
Регистрация: 12.02.2011
Сообщений: 131
Написано 23 полезных сообщений (для 52 пользователей)
|
Ответ: Фак по Юнити.
Костян, ясен пень с ошибкой падает.
Сначала надо определить, что это за объект такой Activator, напр.
Activator = GameObject.Find("Player");
Но по-моему ты что-то не то делаешь.
Я бы сделал так:
1. Создал скрипт Door, в котором определил бы
public OnClick() {...}
private bool IsOpen = false;
и повесил бы его на двери.
2. Когда надо открыть дверь, то делаем так
GameObject.Find("Door").GetComponent<Door>().OnCli ck();
|
(Offline)
|
|
25.11.2011, 17:26
|
#652
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Фак по Юнити.
Костян, ясен пень с ошибкой падает.
Сначала надо определить, что это за объект такой Activator, напр.
|
public GameObject Activator;
а это что???
Неа,так потом уйма объектов с разными именами будет(например уже 3 кнопки и 2 двери....) и сотни строк кода...я имено как в халмере сделать хочу.
|
(Offline)
|
|
25.11.2011, 17:49
|
#653
|
ПроЭктировщик
Регистрация: 12.02.2011
Сообщений: 131
Написано 23 полезных сообщений (для 52 пользователей)
|
Ответ: Фак по Юнити.
Костян,
public GameObject Activator;
Указывает на то, что у тебя есть Activator типа GameObject, у которого ясен пень свойства статус нет (насколько я понимаю, при таком объявлении создается GameObject вида Dummy из редактора).
Вообще не понял, что ты хочешь. Если тебе надо открывание двери по клику на нее, то вместо OnClick() пиши обработчик OnMouseDown в классе Door. Если надо, чтобы дверь открывалась по клику по кнопке, то у кнопки добавляй свойство
public Door[] doors;
И в редакторе указывай нужную дверь/двери.
В коде кнопки дописывай обработчик OnMouseDown, в котором будут открываться или закрываться все двери, перечисленные в Door[], путем вызова соответствующей public процедуры у класса Door.
|
(Offline)
|
|
25.11.2011, 17:52
|
#654
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Фак по Юнити.
У Activatora есть скрипт где написанно :public bool status
Он его меняет в зависимости от чего-то ....вот мне её найти нужно(имена скриптов разные...скрипт на объекте один)
|
(Offline)
|
|
25.11.2011, 17:52
|
#655
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
Те не создал экземпляр класса Activator,поэтому и не находит необходимого поля.В твоем случае делать
Activator.GetComponent<Script>().status
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.11.2011, 17:58
|
#656
|
ПроЭктировщик
Регистрация: 12.02.2011
Сообщений: 131
Написано 23 полезных сообщений (для 52 пользователей)
|
Ответ: Фак по Юнити.
Костян, все понял. Ты наоборот сделал - у каждой двери своя кнопка, которую в редакторе задаешь. Ну тогда Lestar правильно говорит.
|
(Offline)
|
|
25.11.2011, 18:46
|
#657
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Фак по Юнити.
Никто из вас особо не помог,так как работает только:
Activator.GetComponentInChildren<Varics>.status
|
(Offline)
|
|
25.11.2011, 20:02
|
#658
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Сообщение от Костян
Никто из вас особо не помог,так как работает только:
Activator.GetComponentInChildren<Varics>.status
|
Надо просто точнее задачу ставить. Никто не знал, что скрипт находится на дочернем объекте.
В твоем случае надо было:
1. Создать переменную не типа GameObject, а типа Varics.
2. Назначить этой переменной в редкторе тот скрипт, взаимодействие с которым ты хотел сделать (перетащить назначенный скрипт объекту, на поле, или перетащить на поле сам объект с этим скриптом).
3. Заработает твой пример.
|
(Offline)
|
|
25.11.2011, 20:10
|
#659
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Фак по Юнити.
using UnityEngine;
using System.Collections;
public class Door : MonoBehaviour {
public GameObject Activator;
// Use this for initialization
void Start () {
}
private int anim;
// Update is called once per frame
void Update () {
if(Activator.GetComponent<Varics>().Status){
if(!animation.isPlaying && anim==1){
animation.Play("open");
anim=0;
}
}else{
if(!animation.isPlaying && anim==0){
this.animation.Play("close");
anim=1;}
}
}
}
Как сделать так,чтоб анимация доиграла до конца и встала(при status==1,при этом status нельзя менять),а при status==0 опять проиграла,только другая и встала.
p.s свойства анимации once не предлагать-не работает...
|
(Offline)
|
|
25.11.2011, 20:14
|
#660
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Попробуй так:
void Start () { animation.wrapMode = WrapMode.Once; }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:09.
|