ใช้แรงคงที่กับ SCNnode โดยใช้ sceneKit

โดยใช้ ARKit และ SceneKit ฉันกำลังพยายามบินโมเดลโดรน

สำหรับตอนนี้ ผมสามารถวางโดรนไว้บนพื้นผิวได้สำเร็จ จำลองการตรวจจับการชนกันของการสัมผัสระหว่างฐานกับโดรน

สถานการณ์ปัจจุบัน

ตอนนี้ฉันอยากจะลองบินโดรนตัวนี้ ใช้แรงคงที่บ้าง! (ผมไม่อยากแค่ขยับแกน Y เพื่อขยับโดรนขึ้นไป) แต่ผมอยากจำลองแรงดึงมันขึ้นมาเหมือนที่เกิดขึ้นในชีวิตจริง

ผมเริ่มเขียนโค้ดแล้วเรียกเมธอดนี้เมื่อกดปุ่มขึ้น..

// 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)
            
        
    }

ผลจากโค้ดนี้ทำให้โดรนกระโดดขึ้นลงทุกครั้งที่กดปุ่มขึ้น แต่แรงนี้ต้องใช้อย่างต่อเนื่องในเวลา ...

ฉันจะออกแรงอย่างต่อเนื่องเพื่อให้โดรนลอยขึ้นไปในอากาศได้อย่างไร? เคล็ดลับใด ๆ ที่ฉันจะแก้ไขปัญหานี้ได้อย่างไร ...

ฉันไม่พบตัวอย่างที่มีการใช้แรงคงที่กับวัตถุ

ขอบคุณสำหรับความช่วยเหลือ


person Damiano Miazzi    schedule 17.02.2021    source แหล่งที่มา
comment
ฉันไม่สามารถบอกคุณได้ว่าทำไมมันถึงกระโดดขึ้นลงเท่านั้น ฉันยังใช้คำสั่ง ApplyForce นี้กับออบเจ็กต์บางตัวในแอปใดแอปหนึ่งของฉันด้วย แต่ฉันต้องการสิ่งที่ตรงกันข้าม โดยตั้งค่า asImpulte = true ณ จุดนี้คุณอาจพบปัญหาบางอย่าง วัตถุที่มีเนื้อหาทางฟิสิกส์แบบไดนามิกจะต้องไม่ถูกเคลื่อนย้ายโดยสิ่งอื่นใดนอกจากกลไก SCNPhysics ดังนั้นหากคุณต้องการให้โดรนบินและควบคุมทิศทาง คุณจะต้องมีแนวทางอื่น ในเกมตัวอย่าง FOX จาก Apple คุณจะพบกับวิธีที่พวกเขาควบคุมตัวละครได้ ลองจินตนาการถึงสิ่งเดียวกันสำหรับโดรนของคุณ แต่ใน ARKit มันใช้ร่างกาย .kinematic   -  person ZAY    schedule 17.02.2021


คำตอบ (1)


คุณต้องใช้แรงภายในฟังก์ชันลูปอันใดอันหนึ่ง โดยกำหนดตัวแปร var ApplyForce=false จากนั้นในตัวอย่าง buttonUp touch start ตั้งค่า ApplyForce=true บนปลายสัมผัส ตั้งค่า ApplyForce=false จากนั้นฟังก์ชันวงใน: ถ้า ApplyForce ให้ใช้แรง คุณต้องปรับปริมาณแรง คุณยังสามารถเพิ่มพารามิเตอร์เพิ่มเติมได้

person xaled    schedule 15.03.2021