簡體   English   中英

SpriteKit和Swift Ball Speed

[英]SpriteKit & Swift Ball Speed

我使用SpriteKit和Swift 3制作了游戲,並弄清楚了游戲中除球節點速度以外的所有方面。 我對不同的函數applyImpulse()和ball.physicsBody.velocity感到困惑,因為我已經對它們進行了測試,但似乎並不太了解我實際上以編程方式設置的速度。 對我應該使用的內容進行任何澄清都很好嗎?

另外,在測試時(通過在每次碰撞時將球的速度打印到控制台上),我會看到有時球的速度在碰到其他節點(例如沒有專門編碼的球拍)之類的其他節點時,會簡單地變為某個較長且隨機的十進制值與球發生碰撞時,球的速度會發生變化。

總而言之,我將不勝感激:

  1. 只是關於SpriteKit中球的速度以及我應該如何接近球的一般性澄清(我應該使用哪種方法/功能)

  2. 我如何做到,這樣球的速度就不會達到這些很長的隨機小數

謝謝

關於值,對於沖力和力,實際上沒有設定值的規則。 這取決於您的子圖形物理體的大小等。對於1個子圖形大小,80的脈沖可能是一個理想的跳躍值,但不能使其變成一半,而80突然變高了。 還存在諸如重力,質量等因素,對此可能會產生影響。 因此,通常您只需要使用這些值,直到獲得所需的結果。

關於與槳板的碰撞,您需要檢查位掩碼值和動態屬性。 默認情況下,SpriteKit會為所有對象設置碰撞,因此,如果您沒有明確告訴您的槳/球彼此忽略,它們將發生碰撞。 還有些諸如恢復原狀,摩擦,阻尼等可能會影響精靈在碰撞時的行為方式。 Google上有大量關於SpritKit物理/碰撞的教程,或者閱讀Apple文檔。

關於速度和脈沖/力之間的差異,根據蘋果文件

“首先,您可以通過設置物理物體的速度和angularVelocity屬性直接控制其速度。與其他許多屬性一樣,通常在首次創建物理物體時對這些屬性進行一次設置,然后讓物理模擬根據需要對其進行調整。例如,假設您正在做一個基於太空的游戲,其中火箭飛船可以發射導彈,當飛船發射導彈時,導彈應具有飛船的起始速度以及在發射方向上的附加矢量。

當物體處於仿真中時,更常見的是根據施加在物體上的力來調整速度。 速度變化的另一個來源,即碰撞,將在后面討論。”

https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html

所以基本上,一般的經驗法則是這樣的:

1)僅在創建物理物體時設置速度屬性。 我從來不需要為我的游戲這么做。 我唯一真正使用速度屬性的地方是諸如兩次跳躍之類的事情,我需要將其設置為0以獲得一致的兩次跳躍

 ...velocity.dy = 0
 ...applyImpulse( 

2)當您已經在玩游戲時

a)如果您嘗試不斷移動球,則應使用

applyForce...

類似於SKScene的更新方法。

b)如果您想讓球跳起來,那么基本上是短時間的一件事,您應該使用

applyImpulse...

希望這可以幫助

暫無
暫無

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

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