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

Версия 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));
        }
    }
}

} ​​

...