forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

RegIon 25.11.2011 10:46

Ответ: Фак по Юнити.
 
А что,Unity не может рисовать тени не объекте,если он с вывернутыми нормалями(бегаем по кубику с нормалями внутрь)

pax 25.11.2011 10:59

Ответ: Фак по Юнити.
 
Отключи этому кубу Cast Shadows (повлияет на направленный источник света). Точечные источники работают нормально.

RegIon 25.11.2011 16:55

Ответ: Фак по Юнити.
 
Вот у меня есть дверь,есть скрипт для неё,есть объект который эту дверь открывает-закрывает.По сути скрипт через public привязывается к объекту у которого должна быть переменная,напимер bool STATUS.Как сделать так,чтоб скрипт выполнялся в зависимости от переменной(как найти переменную)

pax 25.11.2011 16:56

Ответ: Фак по Юнити.
 
через точку: объект.свойство

RegIon 25.11.2011 17:04

Ответ: Фак по Юнити.
 
Цитата:

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;
        }
       
    }
}
}


Aikon 25.11.2011 17:18

Ответ: Фак по Юнити.
 
Костян, ясен пень с ошибкой падает.
Сначала надо определить, что это за объект такой Activator, напр.
Код:

Activator = GameObject.Find("Player");
Но по-моему ты что-то не то делаешь.
Я бы сделал так:
1. Создал скрипт Door, в котором определил бы
public OnClick() {...}
private bool IsOpen = false;
и повесил бы его на двери.
2. Когда надо открыть дверь, то делаем так
GameObject.Find("Door").GetComponent<Door>().OnCli ck();

RegIon 25.11.2011 17:26

Ответ: Фак по Юнити.
 
Цитата:

Костян, ясен пень с ошибкой падает.
Сначала надо определить, что это за объект такой Activator, напр.
Код:

public GameObject Activator;
а это что???
Неа,так потом уйма объектов с разными именами будет(например уже 3 кнопки и 2 двери....) и сотни строк кода...я имено как в халмере сделать хочу.

Aikon 25.11.2011 17:49

Ответ: Фак по Юнити.
 
Костян,
Код:

public GameObject Activator;
Указывает на то, что у тебя есть Activator типа GameObject, у которого ясен пень свойства статус нет (насколько я понимаю, при таком объявлении создается GameObject вида Dummy из редактора).
Вообще не понял, что ты хочешь. Если тебе надо открывание двери по клику на нее, то вместо OnClick() пиши обработчик OnMouseDown в классе Door. Если надо, чтобы дверь открывалась по клику по кнопке, то у кнопки добавляй свойство
public Door[] doors;
И в редакторе указывай нужную дверь/двери.
В коде кнопки дописывай обработчик OnMouseDown, в котором будут открываться или закрываться все двери, перечисленные в Door[], путем вызова соответствующей public процедуры у класса Door.

RegIon 25.11.2011 17:52

Ответ: Фак по Юнити.
 
У Activatora есть скрипт где написанно :public bool status
Он его меняет в зависимости от чего-то ....вот мне её найти нужно(имена скриптов разные...скрипт на объекте один)

Lestar 25.11.2011 17:52

Ответ: Фак по Юнити.
 
Те не создал экземпляр класса Activator,поэтому и не находит необходимого поля.В твоем случае делать
PHP код:

Activator.GetComponent<Script>().status 


Aikon 25.11.2011 17:58

Ответ: Фак по Юнити.
 
Костян, все понял. Ты наоборот сделал - у каждой двери своя кнопка, которую в редакторе задаешь. Ну тогда Lestar правильно говорит.

RegIon 25.11.2011 18:46

Ответ: Фак по Юнити.
 
Никто из вас особо не помог,так как работает только:
Код:

Activator.GetComponentInChildren<Varics>.status

pax 25.11.2011 20:02

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Костян (Сообщение 211232)
Никто из вас особо не помог,так как работает только:
Код:

Activator.GetComponentInChildren<Varics>.status

Надо просто точнее задачу ставить. Никто не знал, что скрипт находится на дочернем объекте.

В твоем случае надо было:

1. Создать переменную не типа GameObject, а типа Varics.
2. Назначить этой переменной в редкторе тот скрипт, взаимодействие с которым ты хотел сделать (перетащить назначенный скрипт объекту, на поле, или перетащить на поле сам объект с этим скриптом).
3. Заработает твой пример.

RegIon 25.11.2011 20:10

Ответ: Фак по Юнити.
 
Код:

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 не предлагать-не работает...

pax 25.11.2011 20:14

Ответ: Фак по Юнити.
 
Попробуй так:

PHP код:

void Start () {
    
animation.wrapMode WrapMode.Once;  




Часовой пояс GMT +4, время: 07:47.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot