我正在2D環境中處理Unity遊戲。玩家GameObject
附有Rigidbody2D
。滑動時它會水平移動。當滑動太快時,它不會與Colliders
相沖突。也許在檢測到碰撞之前它會改變它的變換位置當滑動緩慢時不會發生。GameObject的快速滑動移動不會與Colliders碰撞
回答
確保您的Rigidbody2D的碰撞檢測模式設置爲Continuous
或Continuous Dynamic
。
如果物體的移動速度太快,它會簡單地忽略碰撞,因爲它從不碰觸實際的碰撞器 - 它只是跳過它。
爲了解決這個問題,您需要預測碰撞何時發生並在正確的時刻觸發。
將碰撞檢測設置爲連續爲pixlark表示可能有助於如果刷卡速度不太快。
根據你的問題,我假設你在Update()
函數中移動你的對象(如果不是,請糾正我)。這意味着你每幀都要移動一定量的物體。但是,Unity會檢查碰撞器並在不同的時間間隔進行物理計算(固定時間步長,https://docs.unity3d.com/Manual/class-TimeManager.html)。
就在對象碰撞之前,會檢查碰撞對象。 Unity每Fixed Timestep
(默認爲每秒0.02次)計算對撞機。如果統一檢測不到碰撞,則意味着你的物體的交叉時間比Fixed Timestep
少,或者換句話說,它們移動速度非常快(就像你描述的那樣)。解決這個問題的一種(不好的)方法是減少物理計算之間的時間。但是,這會大大降低您的程序效率。
取而代之的是,考慮將對象移動到函數FixedUpdate()
中,以便物體每次物理檢查碰撞時才移動。這應該可以解決你的問題。
看看第3個答案(由加斯·史密斯): https://forum.unity3d.com/threads/rigidbody-2d-wont-collide-with-another-object-when-its-moving-really-fast.248786/
我特別想強調的部分:
如果你有Rigidbody2D,你要移動它在FixedUpdate() 使用rigidbody2D.MovePosition(Vector2)。這將通過空間移動 Rigidbody2D,而不是從A點瞬移它 點B.
約光線投射的第二部分不應該爲你的問題是必要的,但如果您繼續遇到問題,你可以使用他們檢查範圍jdweng在他的評論中說。
這裏有幾個地方來了解光線投射,如果您不熟悉它們: https://docs.unity3d.com/ScriptReference/Physics2D.Raycast.html https://unity3d.com/learn/tutorials/topics/physics/raycasting
非常感謝。我在固定更新中移動了遊戲對象。 我通過滑動移動我的對象, transform.position + = transform.right * _hMovement * transformSpeed * Time.deltaTime; 我正在閱讀你給出的參考文獻。 –
- 1. 如何檢測快速移動之間的碰撞物體
- 2. 在Unity中快速移動遊戲對象的碰撞檢測
- 3. Java檢測快速移動物體的碰撞
- 4. 與移動物體的碰撞
- 5. 移動SKSpriteNodes碰撞行爲與物理
- 6. LineSegments的滑動碰撞方程
- 7. 碰撞的精靈不會移動到新的位置
- 8. 滑動響應指向 - 廣場碰撞
- 9. 檢測移動對象與不移動對象之間的碰撞
- 10. 拖動碰撞
- 11. 如何解決與不可移動物體的2D碰撞?
- 12. Flex 3:碰撞檢測和碰撞後移動對象
- 13. jmonkeyengine運動速度太快,無法進行碰撞檢測
- 14. 移動之前的Java碰撞檢測
- 15. Unity2d按鍵碰撞機在角色移動時與邊框碰撞
- 16. UIKit的動態行爲平移與附件不會繼續碰撞行爲?
- 17. 快速碰撞檢測算法
- 18. cpShapes不會碰撞?
- 19. 與牆碰撞並不會停止對象的速度
- 20. 在碰撞時移動攝像頭
- 21. AS3碰撞檢測鼠標移動
- 22. AndEngine Box2D。移除碰撞後的碰撞遊戲碰撞
- 23. 快速滑動多個UIViews
- 24. 計算2個移動球會碰撞的x/y點
- 25. 使用動作移動精靈時不會發生花栗鼠碰撞
- 26. JavaScript的碰撞檢測與CSS動畫
- 27. 如何以與onMouseDrag相同的速度移動GameObject?
- 28. 根據在x軸上的滑動移動gameobject統一
- 29. 電暈/ Box2D檢測與非移動靜態物體的碰撞
- 30. 角度快速啓動不會啓動
您不能測試平等,而不是你需要一個範圍,移動速度快時,你可以通過平等的條件和沒有得到一個確切的平等。 – jdweng