Как проверить, движется ли твердое тело? - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу проверить, движется ли твердое тело, и я попробовал несколько вещей, и это, похоже, не работает.

Я добавляю свой фрагмент кода ниже, но функция обновления в основном срабатывает, когда игровой объект приземляется в определенной области.в этот момент я получаю доступ к твердому телу на веревке, чтобы посмотреть, движется ли оно.Для фрагмента я использую функцию IsSleeping, но она работает.Кто-нибудь знает, как я могу проверить, когда игровой объект приземляется на определенную область, чтобы проверить, не остановился ли он.

void Start()
{
    checkSleeping = false;
    joint = player.transform.Find("Joint 0").gameObject;
    jointRB = joint.GetComponent<Rigidbody2D>();
    Debug.Log("Found Him");
}


void Update()
{
    if (checkSleeping == true)
    {
        SleepingKonyaku();
    }
}

void OnTriggerStay2D (Collider2D col)
{
   if (col.tag == "Player" )
   {
        checkSleeping = true;
   }
}

void OnTriggerExit2D (Collider2D col)
{
    if (col.tag == "Player")
    {
        checkSleeping = false;
    }
}

void SleepingKonyaku ()
{        

    if(jointRB.IsSleeping())
    {
         Invoke ("RestartLevel", 2f);
         Debug.Log ("sleeping baby!!");
    }
    else
    {
        Debug.Log("Not Sleeping");
    }
}

1 Ответ

0 голосов
/ 02 февраля 2019

Что-то считается движущимся, когда оно имеет ненулевую скорость.Так что сделайте это: проверьте, равна ли величина (длина) скорости Rigidbody 0 или, по крайней мере, близка к ней.Для дополнительной производительности вы можете использовать sqrMagnitude вместо magnitude: это не подразумевает получение квадратного корня из значения, что является относительно медленным процессом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...