簡體   English   中英

在SpriteKit(或SceneKit)中更新幾何

[英]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.

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