簡體   English   中英

無論速度如何,如何在每次碰撞中施加相等的力? -Swift,Scenekit

[英]How do I apply an equal force on each collision regardless of velocity? - Swift, Scenekit

每當球與盒子碰撞時,我需要使球體以相同的距離和速度反彈。 截至目前,球將與第一個盒子碰撞,並施加力使其到達下一個盒子。 隨着時間的流逝,球向下一個彈跳的距離較小,直到不再到達為止。 我該如何使球從第一個盒子彈向第二個盒子,然后擊中第二個盒子,使其從第一個盒子到第二個盒子的距離完全相同? 迅捷的SceneKit

我可以想到兩種方式:

虛增的人工重置價值:

在大多數情況下,您會發現歸還(嘗試和錯誤),直到找到一個可行的值為止。 這將需要大於1.0,但不得多。 這將是不可靠的。 幀速率的任何中斷或其他系統延遲都會破壞它。 可能,但充滿脆弱。

要么...

人為地誘導正確的力量:

在其中一個框上將球的速度調零(使其靜止),在正常情況下將其置為零。 然后找到產生“反彈”的確切脈沖量。 一旦知道,當球與另一個盒子碰撞時,將其速度歸零,並施加相反的力。 當它到達第一個盒子時,再次將速度設為零,然后反復施加第一個找到的力。 看起來像彈跳,每次都能完美運行,但是假彈跳。

警告 :由於SpriteKit和SceneKit物理特性的不可靠(不是delta-d),您甚至可能每次也希望將球重新定位到理想的起點。 以防萬一發生漂移。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM