 |
Unity Мультиплатформенный инструмент для разработки игр |
14.07.2011, 23:36
|
#451
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
Мало данных.Что значит не сталкивается?
Можно запустить на постоянное проигрывание и если столкнулся,тогда выключать.
Можно при размыкании коллайдеров
void OnCollisionExit(Collision collision) { animation.Play(); }
Можно еще на кофейной гуще погадать.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.07.2011, 00:13
|
#452
|
Бывалый
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений (для 450 пользователей)
|
Ответ: Фак по Юнити.
Сделать чтобы проигрывалась анимация когда сталкивается а потом добавить !
__________________
|
(Offline)
|
|
15.07.2011, 20:42
|
#453
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
Народ, что в этом скрипте не правильно? Я хочу что, бы когда объект касался пола, то была возможность запускать анимацию ходьбы и идла, а когда он в полёте, то играла анимация прыжка.
В данном случае никакая анимация не запускается, а персонаж находится в начальной позе.
function OnColliderEnter( hit : 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
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
Я бы прикрепил к персонажу думик и лучом мерял расстояние от думика до террайна.Если больше чего то там,считал бы это прыжком.
P.S. В твоем случае
OnColliderEnter ,нет такого метода.Есть OnCollisionEnter ,который будет работать только если на одном из сталкивающихся обьектов есть регидбоди.Выход коллайдера проверяется OnCollisionExit.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.07.2011, 21:25
|
#455
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
function OnCollisionEnter(collision : Collision)
{
if(collision.gameObject.tag == "floor")
{
...
Изменил начальную часть скрипта. Добавил ригид для пола. Но результат прежний. 
|
(Offline)
|
|
15.07.2011, 21:42
|
#456
|
Разработчик
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений (для 883 пользователей)
|
Ответ: Фак по Юнити.
to SaM_:
Смотри, тут вот в чем дело. OnCollisionEnter вызывается только ОДИН раз, как только коллайдеры впервые соприкоснулись. Если успел в этот момент нажать соответствующую кнопку - начнет проигрываться анимация.
Тебе надо использовать OnCollisionStay. Он вызывается КАЖДЫЙ КАДР, когда один коллайдер (текущий) соприкасается с другим.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.07.2011, 21:47
|
#457
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
cahekp, так тоже не выходит. Не знаю в чем проблема, но игрок вообще не реагирует на скрипт, хотя если убрать всё что связанно с collision, то анимация играет при нажатии клавиш.
|
(Offline)
|
|
15.07.2011, 22:31
|
#458
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
Проверь через Debug.Log срабатывание
if(collision.gameObject.tag == "floor")
И проверь floor на правильность написания.Регистр букв имеет значение.
P.S.Добавлять регидбоди к террайну это очень плохая идея.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
16.07.2011, 12:22
|
#459
|
Бывалый
Регистрация: 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
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
void Update()
{
Debug.Log(Time.timeScale);
if (Input.GetKeyDown(KeyCode.T))
{Time.timeScale = 1 - Time.timeScale;}
}
Все работает,Time.timeScale отображает корректно.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
16.07.2011, 17:07
|
#461
|
ПроЭктировщик
Регистрация: 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
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
Прикрепил сцену в которой данный скрипт работает.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.07.2011, 18:19
|
#463
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
Lestar, благодарю. Если не применять к кубу Platform Input Controller или Character Motor, или что-то такое, то всё работает.
|
(Offline)
|
|
16.07.2011, 18:35
|
#464
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
Platform Input Controller использует компонент Character Motor.
В Character Motor есть метод работающий с коллайдером.Он и может "конфликтовать".
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
17.07.2011, 15:02
|
#465
|
Бывалый
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений (для 428 пользователей)
|
Ответ: Фак по Юнити.
Как поднимать объекты с ригидбоди? Ну типо как обычно в играх, навел мышкой на объект, нажал клавишу и если на нём ригидбоди то его можно передвигать курсором.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:51.
|