Скрипт открытия двери. [Решено]

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

Re: Скрипт открытия двери.

Сообщение Pyx 15 ноя 2010, 19:15

Для того,чтобы показать что то делайте маленькие демки,не грузите все ресурсы.Заимейте привычку вести сразу два проекта,пока учитесь,чтобы не путаться основной и тестовый,в котором проверяйте как что работает.Это не наставления,а просто совет.Ну каждый будет качать 200 с гаком метров,чтобы в них ковыряться.
Pyx
 

Re: Скрипт открытия двери.

Сообщение Ert Donuell 15 ноя 2010, 19:17

Pyx писал(а):Каким образом HingleJoint отвечает за коллизию предметов? (popcorn1)

Можно юзать триггер. HingleJoint двери нормальные даст) Вместо скрипта открытия двери можно сделать открытие двери по триггеру. А можно не заменять скрипт и просто повесить триггер
Добавить dmitrii.baranov.yumasoft в Skype
Аватара пользователя
Ert Donuell
Старожил
 
Сообщения: 781
Зарегистрирован: 05 июл 2010, 09:50
Откуда: Санкт-Петербург
  • ICQ

Re: Скрипт открытия двери.

Сообщение LexLotr 15 ноя 2010, 19:19

Pyx писал(а):Для того,чтобы показать что то делайте маленькие демки,не грузите все ресурсы.Заимейте привычку вести сразу два проекта,пока учитесь,чтобы не путаться основной и тестовый,в котором проверяйте как что работает.Это не наставления,а просто совет.Ну каждый будет качать 200 с гаком метров,чтобы в них ковыряться.

Хорошо, учту на будущее.
Вот тоже самое у меня и с гемами получается. Сделал все по урокам, на контролере от 1го лица они собираются и все работает. Вешаю скрипт гемколлект на машинку, как упертая врезается в гем и стоит, собирать не хочет((( что же я не так делаю? подскажите пожалуйста...
LexLotr
UNец
 
Сообщения: 16
Зарегистрирован: 13 ноя 2010, 21:17

Re: Скрипт открытия двери.

Сообщение Pyx 15 ноя 2010, 22:29

Синтаксис:
Используется javascript
var doorOpened : boolean = false;
var doorAudio : AudioClip;
var doorShut : AudioClip;
var timer : float = 0.0;


function OnCollisionEnter(door : Collision)
 {
  if(door.transform.tag == "house1door")
  {
                openDoor();
   }
}


function Update(){
       
        if(doorOpened){
           
                timer += Time.deltaTime;
               
        }
       
        if(timer >= 5){
                shutDoor();    
        }
}

function shutDoor(){

        var theHouse = gameObject.FindWithTag("house1");
        theHouse.animation.Play("doorshuts");  
        audio.PlayOneShot(doorShut);   
        timer = 0;
}


function openDoor(){
       
                doorOpened = true;
                var theHouse = gameObject.FindWithTag("house1");               
                theHouse.animation.Play("dooropen");           
                audio.PlayOneShot(doorAudio);  

               
}
 


Разница в том,что на FPS контоллере используется Character Controller ,а на машинке Regidbody(физика).
Pyx
 

Re: Скрипт открытия двери.

Сообщение LexLotr 16 ноя 2010, 11:13

Спасибо! Что то начало получаться. Если для двери поменяли на коллизион то тут тоже надо, для сбора гемов?
Код: Выделить всё
static var Count : int = 0;
var CollectSound : AudioClip;

function OnControllerColliderHit(hit:ControllerColliderHit){

   if(hit.gameObject.tag == "gem"){
      
      Destroy(hit.gameObject);
      Count++;
      audio.PlayOneShot(CollectSound);
   }   
   
}
LexLotr
UNец
 
Сообщения: 16
Зарегистрирован: 13 ноя 2010, 21:17

Re: Скрипт открытия двери.

Сообщение Pyx 16 ноя 2010, 13:53

Без малейшего понятия.Откуда я знаю что такое gem и где этот скрипт будет висеть.Могу только догадаться,что он будет висеть на машинке,использующей физику,значит работать не будет.
Pyx
 

Re: Скрипт открытия двери.

Сообщение LexLotr 16 ноя 2010, 15:05

Тут похожая ситуация с дверью. Гем - тоже физический объект на карте Изображение, который по моему плану должен исчезать, когда к нему также подъезжает машинка. Вы правы, что не работает, машинка просто в него упирается и встает. Этот скрипт так же повесил на машинку. Не подскажете как тут решить проблемку?
LexLotr
UNец
 
Сообщения: 16
Зарегистрирован: 13 ноя 2010, 21:17

Re: Скрипт открытия двери.

Сообщение Pyx 16 ноя 2010, 16:12

Gem не подчиняется законам физики,на нем нет Regidbody.Проблему можно решить так же как и предыдущую.
Pyx
 

Re: Скрипт открытия двери.

Сообщение LexLotr 16 ноя 2010, 19:53

Pyx писал(а):Gem не подчиняется законам физики,на нем нет Regidbody.Проблему можно решить так же как и предыдущую.

Написал по вашему примеру:
Код: Выделить всё
static var Count : int = 0;
var CollectSound : AudioClip;

function OnCollisionEnter(Gem : Collision){

   if(Gem.gameObject.tag == "gem"){
      
      Destroy(Gem.gameObject);
      Count++;
      audio.PlayOneShot(CollectSound);
   }   
   
}


Помогло! Машинка теперь их собирает :) Биг спс за помощь. Надо теперь доразбираться с дверью, а то после первого открытия она произвольно быстро открывается и сразу же закрывается))
Народ, может кто подкинуть идейку, как можно реализовать условия победы? Хочу сделать, что если, кто то соберем n-ное кол-во гемов первей остальных, то ему пишется на экране Win , остальным Losе и дальше происходит выход из игры.

Или как вариант, что все собирают гемы, их число тикает в общий счетчик , надо так же собрать n-ное кол-во за определенный промежуток времени, не успели, то все сразу проиграли... Поделитесь идеями как это можно реализовать...
LexLotr
UNец
 
Сообщения: 16
Зарегистрирован: 13 ноя 2010, 21:17

Пред.

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

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

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