Terapkan gaya konstan ke SCNnode menggunakan sceneKit

menggunakan ARKit dan SceneKit saya mencoba membuat model Drone terbang.

untuk saat ini berhasil saya dapat menempatkan drone di atas permukaan, mensimulasikan tabrakan dan mendeteksi kontak antara pangkalan dan drone.

Situasi saat ini

Sekarang saya ingin mencoba menerbangkan drone ini, berikan kekuatan yang konstan! (Saya tidak ingin sekadar menggerakkan sumbu Y untuk menaikkan drone) tetapi saya ingin mensimulasikan gaya yang menariknya seperti yang terjadi di kehidupan nyata.

Saya mulai menulis beberapa kode, dan memanggil metode ini setelah saya menekan tombol atas..

// hit test and find object with specific name
    func applyForceToDrone() {
        print("tapped apply force drone at position ")
        
        let nodo = arrayDrone[0] // return the scnNode of the Drone in the scene
        let force = SCNVector3(0, 15, 0)
        
        print("appply force")
        nodo.physicsBody?.applyForce(force, asImpulse: false)
            
        
    }

hasil dari kode ini adalah drone melompat-lompat setiap kali saya menekan tombol atas. tapi gaya ini perlu diterapkan secara konstan dalam waktu ...

Bagaimana saya bisa terus-menerus menerapkan kekuatan untuk menjaga drone tetap di udara? ada tip bagaimana saya bisa mengatasi masalah ini ...

Saya tidak dapat menemukan contoh di mana gaya konstan diterapkan pada suatu benda.

Terima kasih untuk bantuannya.


person Damiano Miazzi    schedule 17.02.2021    source sumber
comment
Sejujurnya saya tidak bisa memberi tahu Anda mengapa ia hanya melompat-lompat. Saya juga menggunakan perintah applyForce ini pada beberapa objek di salah satu aplikasi saya, tetapi saya memerlukan yang sebaliknya, menyetel asImpulte = true. Pada titik ini Anda mungkin mengalami beberapa masalah. Objek yang berisi badan fisika dinamis tidak boleh digerakkan oleh apa pun selain mesin SCNPhysics. Jadi jika Anda ingin membiarkan drone Anda terbang dan mengontrol arah, Anda memerlukan pendekatan lain. Dalam contoh permainan FOX dari Apple Anda dapat menemukan beberapa pendekatan bagaimana mereka mengontrol karakter. Bayangkan hal yang sama untuk drone Anda, tetapi di ARKit. Ia menggunakan tubuh .kinematik.   -  person ZAY    schedule 17.02.2021


Jawaban (1)


Anda harus menerapkan gaya di dalam salah satu fungsi loop. Untuk melakukannya, tentukan variabel var applyForce=false. Kemudian misalnya buttonUp touch start, set applyForce=true, pada touch end set applyForce=false. Kemudian di dalam fungsi loop: jika applyForce maka lakukan penerapan gaya. Anda harus mengubah jumlah kekuatan. Anda juga dapat menambahkan lebih banyak parameter.

person xaled    schedule 15.03.2021