Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity

Unity Мультиплатформенный инструмент для разработки игр

Ответ
 
Опции темы
Старый 14.07.2011, 23:36   #451
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Фак по Юнити.

Мало данных.Что значит не сталкивается?
Можно запустить на постоянное проигрывание и если столкнулся,тогда выключать.
Можно при размыкании коллайдеров
void OnCollisionExit(Collision collision) {
animation.Play();

Можно еще на кофейной гуще погадать.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SaM_ (15.07.2011)
Старый 15.07.2011, 00:13   #452
h1dd3n
Бывалый
 
Аватар для h1dd3n
 
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений
(для 450 пользователей)
Ответ: Фак по Юнити.

Сделать чтобы проигрывалась анимация когда сталкивается а потом добавить !
__________________
(Offline)
 
Ответить с цитированием
Старый 15.07.2011, 20:42   #453
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Сообщение Ответ: Фак по Юнити.

Народ, что в этом скрипте не правильно? Я хочу что, бы когда объект касался пола, то была возможность запускать анимацию ходьбы и идла, а когда он в полёте, то играла анимация прыжка.
В данном случае никакая анимация не запускается, а персонаж находится в начальной позе.

function OnColliderEnterhit Collider)  
{

        if(
hit.gameObject.tag == "floor")
        {


if (
Input.GetKey("a"))
{
animation.Play("walk");
}

else if (
Input.GetKey("d"))
{
animation.Play("walk");
}

else {
animation.Play("idle");
}
}


else
{
animation.Play("jump");
}

(Offline)
 
Ответить с цитированием
Старый 15.07.2011, 21:08   #454
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Фак по Юнити.

Я бы прикрепил к персонажу думик и лучом мерял расстояние от думика до террайна.Если больше чего то там,считал бы это прыжком.

P.S. В твоем случае
OnColliderEnter ,нет такого метода.Есть OnCollisionEnter ,который будет работать только если на одном из сталкивающихся обьектов есть регидбоди.Выход коллайдера проверяется OnCollisionExit.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SaM_ (15.07.2011)
Старый 15.07.2011, 21:25   #455
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

function OnCollisionEnter(collision Collision)
{

        if(
collision.gameObject.tag == "floor")
        {

... 
Изменил начальную часть скрипта. Добавил ригид для пола. Но результат прежний.
(Offline)
 
Ответить с цитированием
Старый 15.07.2011, 21:42   #456
cahekp
Разработчик
 
Аватар для cahekp
 
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений
(для 883 пользователей)
Ответ: Фак по Юнити.

to SaM_:
Смотри, тут вот в чем дело. OnCollisionEnter вызывается только ОДИН раз, как только коллайдеры впервые соприкоснулись. Если успел в этот момент нажать соответствующую кнопку - начнет проигрываться анимация.

Тебе надо использовать OnCollisionStay. Он вызывается КАЖДЫЙ КАДР, когда один коллайдер (текущий) соприкасается с другим.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SaM_ (15.07.2011)
Старый 15.07.2011, 21:47   #457
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

cahekp, так тоже не выходит. Не знаю в чем проблема, но игрок вообще не реагирует на скрипт, хотя если убрать всё что связанно с collision, то анимация играет при нажатии клавиш.
(Offline)
 
Ответить с цитированием
Старый 15.07.2011, 22:31   #458
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Фак по Юнити.

Проверь через Debug.Log срабатывание
if(collision.gameObject.tag == "floor"
И проверь floor на правильность написания.Регистр букв имеет значение.

P.S.Добавлять регидбоди к террайну это очень плохая идея.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Старый 16.07.2011, 12:22   #459
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Ответ: Фак по Юнити.

f (Input.GetKeyDown(KeyCode.T)){Time.timeScale = 1 - Time.timeScale;}
жму 1 раз - всё остановилось
жму 2 раз - всё звисло, фпс: NaN
(Offline)
 
Ответить с цитированием
Старый 16.07.2011, 15:24   #460
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Фак по Юнити.

void Update() 
    {
        
Debug.Log(Time.timeScale);
        if (
Input.GetKeyDown(KeyCode.T))
        {
Time.timeScale Time.timeScale;} 
    } 
Все работает,Time.timeScale отображает корректно.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Старый 16.07.2011, 17:07   #461
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

Народ, вот смотрите, решил сделать чистый проект с элементарными объектами, что бы проверить работоспособность OnCollisionEnter.

Создал Cube, Plate и один скрипт. К Cube применил Platform Input Controller, RigidBody и единственный скрипт. К Plate назначил тег "floor".
Вот скрипт к Cube:
function OnCollisionEnter (collision Collision


        if(
collision.gameObject.tag == "floor"
        {
            
Destroy (gameObject); 
            }

При запуске проекта, куб под действием гравитации падает на Plate, но не удаляется, как должно быть.
Что я делаю не так?
(Offline)
 
Ответить с цитированием
Старый 16.07.2011, 17:38   #462
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Фак по Юнити.

Прикрепил сцену в которой данный скрипт работает.
Вложения
Тип файла: zip Test_Destroy.zip (1.17 Мб, 473 просмотров)
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SaM_ (16.07.2011)
Старый 16.07.2011, 18:19   #463
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

Lestar, благодарю. Если не применять к кубу Platform Input Controller или Character Motor, или что-то такое, то всё работает.
(Offline)
 
Ответить с цитированием
Старый 16.07.2011, 18:35   #464
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Фак по Юнити.

Platform Input Controller использует компонент Character Motor.
В Character Motor есть метод работающий с коллайдером.Он и может "конфликтовать".
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Старый 17.07.2011, 15:02   #465
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Ответ: Фак по Юнити.

Как поднимать объекты с ригидбоди? Ну типо как обычно в играх, навел мышкой на объект, нажал клавишу и если на нём ригидбоди то его можно передвигать курсором.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com