Jadi, saya sedang mengembangkan game VR dengan fungsionalitas bangunan dasar dan menggunakan posisi di mana tangan pemain terkena Raycast sebagai posisi yang harus dituju oleh GameObject pratinjau. Tapi jelas ketika saya melakukan itu, klip gameObject melalui mesh Hit. Saya mencoba mencari cara untuk menghindarinya.

Saya telah menemukan solusi tetapi tidak membuatnya bekerja dengan cara apa pun. Mungkin itu ide saya, mungkin pengetahuan pemrograman saya, tidak tahu, tapi yah. Ini akan menjadi itu.

rendisi artis

Jadi Preview GameObject Transform diatur ke transformasi HitPoint dan menjauh dari titik tumbukan sampai tidak bertabrakan lagi. Aku rasa? Saya hanya datang dengan solusi kinerja berat dan mereka bahkan tidak bekerja. Apakah seseorang tahu solusi yang baik?

Terima kasih sebelumnya!

0
VRGamerBoi 13 Mei 2021, 02:35

1 menjawab

Jawaban Terbaik

Sepertinya Anda mencari Physics.ComputePenetration

Hitung terjemahan minimal yang diperlukan untuk memisahkan penumbuk yang diberikan pada pose tertentu.

Jadi, Anda akan memerlukan Collider pada objek yang Anda tempatkan (yang hit sudah memilikinya) dan kemudian lakukan mis.

// Wherever you get this from
Collider objectToPlace;

if(Physics.Raycast(yourRay, out var hit))
{
    objectToPlace.trabsform.position = hit.point;

    if(Physics.ComputePenetration(objectToPlace, objectToPlace.transform.position, objectToPlace.transform.rotation, hit.collider, hit.transform.position, hit.transform.rotation, out var direction, out var distance))
    {
        objectToPlace.position += direction * distance;
    }
}
1
derHugo 13 Mei 2021, 04:44