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)

Lestar 14.07.2011 23:36

Ответ: Фак по Юнити.
 
Мало данных.Что значит не сталкивается?
Можно запустить на постоянное проигрывание и если столкнулся,тогда выключать.
Можно при размыкании коллайдеров
PHP код:

void OnCollisionExit(Collision collision) {
animation.Play();


Можно еще на кофейной гуще погадать.

h1dd3n 15.07.2011 00:13

Ответ: Фак по Юнити.
 
Сделать чтобы проигрывалась анимация когда сталкивается а потом добавить !

SaM_ 15.07.2011 20:42

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

PHP код:

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



Lestar 15.07.2011 21:08

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

P.S. В твоем случае
OnColliderEnter ,нет такого метода.Есть OnCollisionEnter ,который будет работать только если на одном из сталкивающихся обьектов есть регидбоди.Выход коллайдера проверяется OnCollisionExit.

SaM_ 15.07.2011 21:25

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

function OnCollisionEnter(collision Collision)
{

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

... 

Изменил начальную часть скрипта. Добавил ригид для пола. Но результат прежний. :(

cahekp 15.07.2011 21:42

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

Тебе надо использовать OnCollisionStay. Он вызывается КАЖДЫЙ КАДР, когда один коллайдер (текущий) соприкасается с другим.

SaM_ 15.07.2011 21:47

Ответ: Фак по Юнити.
 
cahekp, так тоже не выходит. Не знаю в чем проблема, но игрок вообще не реагирует на скрипт, хотя если убрать всё что связанно с collision, то анимация играет при нажатии клавиш.

Lestar 15.07.2011 22:31

Ответ: Фак по Юнити.
 
Проверь через Debug.Log срабатывание
PHP код:

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

И проверь floor на правильность написания.Регистр букв имеет значение.

P.S.Добавлять регидбоди к террайну это очень плохая идея.

is.SarCasm 16.07.2011 12:22

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

f (Input.GetKeyDown(KeyCode.T)){Time.timeScale = 1 - Time.timeScale;}
жму 1 раз - всё остановилось
жму 2 раз - всё звисло, фпс: NaN

Lestar 16.07.2011 15:24

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

void Update() 
    {
        
Debug.Log(Time.timeScale);
        if (
Input.GetKeyDown(KeyCode.T))
        {
Time.timeScale Time.timeScale;} 
    } 

Все работает,Time.timeScale отображает корректно.

SaM_ 16.07.2011 17:07

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

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

function OnCollisionEnter (collision Collision


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


При запуске проекта, куб под действием гравитации падает на Plate, но не удаляется, как должно быть.
Что я делаю не так?:SOS:

Lestar 16.07.2011 17:38

Ответ: Фак по Юнити.
 
Вложений: 1
Прикрепил сцену в которой данный скрипт работает.

SaM_ 16.07.2011 18:19

Ответ: Фак по Юнити.
 
Lestar, благодарю. Если не применять к кубу Platform Input Controller или Character Motor, или что-то такое, то всё работает.

Lestar 16.07.2011 18:35

Ответ: Фак по Юнити.
 
Platform Input Controller использует компонент Character Motor.
В Character Motor есть метод работающий с коллайдером.Он и может "конфликтовать".

is.SarCasm 17.07.2011 15:02

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


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

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