[英]Updating geometry in SpriteKit (or SceneKit)
我們正在將游戲移植到SpriteKit,我遇到了一個問題。 我們游戲中的某些對象附有三角形條紋軌跡。 路徑的頂點緩沖區會隨着對象在世界中移動而不斷更新,以創建無縫流暢的效果(緩沖區中有多少個頂點以及我們發出新頂點的頻率受到限制)。
在以前的實現中,只要我們發出新的頂點,我們就只需在相應的緩沖區中更新受影響的頂點。 在SceneKit中,除非我使用geometrySourceWithBuffer:vertexFormat:semantic:vertexCount:dataOffset:dataStride:
:,否則似乎無法更新幾何源。 但是,要執行此操作,似乎我需要一個Metal設備,命令隊列和編碼器,以便能夠提交命令以在渲染緩沖區之前更新我的緩沖區。
有什么辦法可以使用普通的SCNView
來完成此SCNView
,還是必須使用CAMetalLayer
手動完成所有操作,創建自己的金屬設備等?
從本質上講,我們需要的所有東西都可以在SpriteKit中使用,但可以在SpriteKit中使用此幾何圖形,因此我希望可以通過某種方式掌握SKView使用的金屬設備和命令隊列,並簡單地使用它來上傳幾何圖形。 這將使事情變得更簡單。
我使用了粒子系統來獲得類似的效果。 粒子發射器附着在運動物體上,粒子設置為淡出並最終死亡。 根據您想要的效果,您可能需要將發射器的targetNode
設置為場景。
emitter = SKEmitterNode()
emitter.name = marbleNodeNames.trail.rawValue
emitter.particleTexture = SKTexture(imageNamed: "spark")
emitter.particleAlphaSpeed = -1.0
emitter.particleLifetime = 2
emitter.particleScale = 0.2
marbleSprite.addChild(emitter)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.