Задать вопрос
@rudaki29rus

Как определит сторону на которую упал 3d объект?

Здравствуйте. Суть вопроса - в программе создается множество цилиндров. При создании мы задаем высоту и диаметр цилиндра, угол наклона. Они появляются в воздухе не определенной высоте от поверхности. Над как-то определить на какую сторону упал цилиндр - боком или на вершину. Пробовал через соотношение размера по x и y, считает как-то криво. Можно это реализовать как-то через коллайдеры?
  • Вопрос задан
  • 93 просмотра
Подписаться 2 Средний 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
@Tiubert
Скрипт будет выглядеть примерно так:
/*
Наглядно и ясно:)
Left - левая рука
Right - права рука
Up - голова сверху
Down - ноги снизу
Front - живот
Behind - спина
*/
public void OnTriggerEnter(Collider other)
{
    if(other.name == "LeftCol")
    {
        Debug.Log("Левая сторона");
    }
    if(other.name == "RightCol")
    {
        Debug.Log("Правая сторона");
    }
    if(other.name == "UpCol")
    {
        Debug.Log("Верхняя сторона");
    }
    if(other.name == "DownCol")
    {
        Debug.Log("Нижняя сторона");
    }
    if(other.name == "FrontCol")
    {
        Debug.Log("Спереди");
    }
    if(other.name == "BehindCol")
    {
        Debug.Log("Сзади");
    }
}
Ответ написан
PragmaGames
@PragmaGames
Увлекаюсь Unity.
private void OnCollisionEnter(Collision other)
    {
        var normal = other.GetContact(0).normal;
    
        var collisionTransform = other.transform;
    
        if (normal == collisionTransform.up)
        {
            Debug.Log("Top");
        }
        
        if (normal == -collisionTransform.up)
        {
            Debug.Log("Down");
        }
        
        if (normal == collisionTransform.right)
        {
            Debug.Log("Right");
        }
        
        if (normal == -collisionTransform.right)
        {
            Debug.Log("Left");
        }
        
        if (normal == collisionTransform.forward)
        {
            Debug.Log("forward");
        }

        if (normal == -collisionTransform.forward)
        {
            Debug.Log("back");
        }
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы