Почему мой проектор для декалей неправильно запускается, когда он одновременно падает на стену и пол?

Версия Unity: 2018.3.2f1

Когда я бросаю мяч в стену, на месте, где он сталкивается, появляется проекционная картинка. Это идет хорошо, пока мяч не коснется стены и земли одновременно. Затем проектор наклеек запускается неправильно, так что красное пятно не выходит хорошо на обеих поверхностях

Как вы можете видеть на скриншотах ниже, я знаю, что переводная картинка должна стоять под углом к ​​стене, чтобы она также проецировалась на землю. Только я понятия не имею, как я могу это сделать

Теперь я проверяю, что когда шар касается слоя с меткой "col", он находится точно в той точке, где он сталкивается, и помещает проектор с наклейками. Я хотел бы знать, как я могу также расположить их косо

Наклейка породила неправильный PNG

Декаль породила неправильное видео

Это то, что я хочу, когда оно падает на стену и пол: это Ват, я хочу

public Camera cam;
public Transform sphere;
public float distanceFromCamera;
Rigidbody r;
public GameObject decalPrefab;

// Start is called before the first frame update
void Start()
{
    distanceFromCamera = Vector3.Distance(sphere.position, cam.transform.position);
    r = sphere.GetComponent<Rigidbody>();
}

Vector3 lastPos;
// Update is called once per frame
void Update()
{
    if (Input.GetMouseButton(0))
    {
        Vector3 pos = Input.mousePosition;
        pos.z = distanceFromCamera;
        pos = cam.ScreenToWorldPoint(pos);
        r.velocity = (pos - sphere.position) * 10;
    }
}

void OnCollisionEnter(Collision col)
{
    if (col.gameObject.tag == "col")
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hitInfo;
        if (Physics.Raycast(ray, out hitInfo, 100000f))
        {
            Instantiate(decalPrefab, col.contacts[0].point, Quaternion.FromToRotation(Vector3.up, col.contacts[0].normal));
        }
    }
}

}

0 ответов

Другие вопросы по тегам