Скрипт для двери

Программирование на Юнити.

Скрипт для двери

Сообщение troyanich 12 дек 2010, 14:26

Здравствуйте, необходимо написать скрипт на открывание-закрывание двери при помощи Raycast.Не пойму как это должно работать, подскажите пожалуйста
troyanich
UNIт
 
Сообщения: 120
Зарегистрирован: 14 июл 2010, 17:18
Откуда: Волгоград
  • ICQ

Re: Скрипт для двери

Сообщение Zaicheg 12 дек 2010, 14:31

Синтаксис:
Используется csharp
Transform myDoor;
void CloseDoor()
{ Ray ray = new Ray(myDoor.position - myDoor.forward, myDoor.forward);
for (int i = 0; i < 1000000; i++) { Physics.Raycast(ray); } }

В результате, лучи захлопывают дверь со страшной силой

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

Re: Скрипт для двери

Сообщение troyanich 12 дек 2010, 15:39

банальная задача- открывание двери при приближении к ней и закрывание при отдалении
troyanich
UNIт
 
Сообщения: 120
Зарегистрирован: 14 июл 2010, 17:18
Откуда: Волгоград
  • ICQ

Re: Скрипт для двери

Сообщение Golandez 12 дек 2010, 15:57

OnCollisionEnter
OnCollisionExit
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Скрипт для двери

Сообщение Zaicheg 12 дек 2010, 16:03

Синтаксис:
Используется csharp
float opencloseDistance = 5f;
DoorDistance doorDistance = DoorDistance.Far;
enum DoorDistance { Near = 0, Far = 1, }

if (Vector3.Distance(transform.position, myDoor.position) < opencloseDistance && doorDistance == DoorDistance.Far)
{ myDoor.GetComponent<Door>().Open(); doorDistance = DoorDistance.Near; }
if (Vector3.Distance(transform.position, myDoor.position) > opencloseDistance && doorDistance == DoorDistance.Near)
{ myDoor.GetComponent<Door>().Close(); doorDistance = DoorDistance.Far; }
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Скрипт для двери

Сообщение Golandez 12 дек 2010, 18:23

Синтаксис:
Используется csharp
enum DoorDistance { Near = 0, Far = 1, }

В данном случае не обязательно явное указание значений операторов.
Достаточно будет
Синтаксис:
Используется csharp
enum DoorDistance { Near , Far }
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Скрипт для двери

Сообщение Левш@ 13 дек 2010, 00:33

скрипт на открывание-закрывание двери при помощи Raycast.

Обязательно физику рейкастами нагружать, там где они не нужны?
Можно просто подложить под двери плоский боксколлайдер:

Синтаксис:
Используется javascript
var animOpen : AnimationClip;
var animClose : AnimationClip;
var soundOpen : AudioClip;
var soundClose : AudioClip;
static var open = 1;
static var close = 0;

function OnTriggerEnter (other : Collider) {
  if (open == 1)  {
        open = 0;
    Open ();
        }
}

function OnTriggerExit (other : Collider) {
  if (close == 1)  {
        close = 0;
        Close ();
        }
}
function Open ()  {
              audio.clip = soundOpen;
        audio.Play();
        animation.clip = animOpen;
        animation.Play();
        yield WaitForSeconds (animation.clip.length);
        close = 1;
}
function Close ()  {
        audio.clip = soundClose;
        audio.Play();
        animation.clip = animClose;
        animation.Play();
        yield WaitForSeconds (animation.clip.length);
        open = 1;
}
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Скрипт для двери

Сообщение hodok 25 дек 2010, 18:50

Меня тоже заинтересовал скриптик для простейшей анимации - в данном случае для дверей.
Задача такая - при подходе на дистанцию - например 8, срабатывает простейшая анимация.
Затем при дистанции больше 8 эта анимация должна сработать вобратном направлении.
Большая просьба подсказать начинающему - как это всё отобразить в скрипте, потому как скорость анимации работает только на движение анимации вперёд, а когда обратная анимация - то двери просто захлопываются.
Честно говоря уже неделю переливаю из пустого в порожнее.
Мб надо не через функцию Update? Тогда как? Дайте плз дельный совет.

Вот примерный скрипт
Синтаксис:
Используется javascript
var target : Transform;
var Rasstoyanie = 8;
var Plaaaay : boolean = true;
function Update()
{      
var target = GameObject.FindWithTag("Player").transform;

    if(Vector3.Distance(transform.position, target.position) < Rasstoyanie)
        {

        if  (Plaaaay == true){
                animation["ation"].speed = 0.6;
                animation.Play("ation");        
         Plaaaay = false;

}
}
else{
   if  (Plaaaay == false){  
animation["ation"].speed = -0.6;               
animation.Play("ation");
        Plaaaay = true;
        animation["ation"].speed = 0;
}
}

}

Прошу не судить уж очень сурово ) - я только учусь
Всё - решил, спс подсказок не надо, если кого заинтересует - стучите в аську 5000603
Последний раз редактировалось hodok 26 дек 2010, 12:28, всего редактировалось 1 раз.
hodok
UNец
 
Сообщения: 1
Зарегистрирован: 25 дек 2010, 18:27
  • ICQ

Re: Скрипт для двери

Сообщение Zaicheg 25 дек 2010, 19:06

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


Вернуться в Скрипты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9