2016-01-21 21 views
2

任何人都有SpriteKit中的Velocity字段工作?SpriteKit中的Velocity字段

當然,我不確定我是否理解它應該如何工作,但是我在Xcode UI內部進行了佈線,而不是代碼。我的目的是讓動態spritenodes被拉到一個方向,如果他們進入該速度場的地區。看到速度場節點沒有自己的大小,我只是假設我必須將它添加爲另一個spritenode(稱爲areaofvelocityfield)的子節點,它不是物理的,而是具有一個大小,以便其他動態spritenodes可以進入它受到力量的影響。所以選擇Velocity Field節點,我選擇areaofvelocityfield

現在,無論我做什麼,任何動態節點都會受到該力的影響,無論它們是否位於areaofvelocityfield內或其任何附近。無論距離包含速度場的節點和速度場本身,它們總是受到影響並拉入場的矢量中。

iOS 9.2.1。 Xcode 7.2。

+0

您是否嘗試更改速度場節點的某些其他屬性,如「衰減」和「強度」?此外,通過設置'view.showsFields = true',您可以看到任何字段節點的可視化表示。 – 0x141E

+0

目前爲止我只使用Xcode。我必須找到一種方法來顯示場地。或者嘗試讓設備上運行的東西,但我希望我不必去那裏。是的,我嘗試了衰退和其他類似Min的半徑,到目前爲止沒有做任何事情。 – Jonny

+0

有一種叫做區域的東西。它似乎必須設置,但它不能在用戶界面中完成。除非設置區域,否則我認爲場效應是「全局」的。衛生署。再次使用用戶界面。 – Jonny

回答

1

因此,似乎必須將.region設置爲SKFieldNode。這不能從Xcode完成。至少它不能做到這樣,這是我當前的代碼效果很好:

SKSpriteNode* belt = (SKSpriteNode*)[self childNodeWithName:@"belt"]; 

SKFieldNode* myfield = (SKFieldNode*)[self childNodeWithName:@"myfield"]; 
myfield.region = [[SKRegion alloc] initWithSize:CGSizeMake(belt.size.width * 0.5, 10)]; 

請注意,我試圖讓一些像「傳送帶」。皮帶精靈只是一個矩形。 Myfield的位置與皮帶位置相同。所有節點直接放置在世界上,根節點,不需要父母。在另一個節點中放置一個字段對它所影響的區域沒有任何影響(或者它可能有,這裏不確定)。出於某種原因,我不得不將力場的寬度設置爲可見帶的一半​​,否則它會持續影響長時間落在帶上的任何動態節點。 我用於該領域的其他數值有:強度1,衰減10,最小。半徑1.不確定真正有什麼區別,因爲這在Xcode界面中不容易測試。需要大量的試驗和錯誤來弄清楚這一切是如何運作的。

關於區域大小:正如文檔所述,大小從所有方向的原點突出,這意味着寬度和高度實際上是您設置的兩倍。

+0

btw .showsFields似乎什麼都不做,除了吃掉設備上的所有內存。我必須在內存過載的幾秒鐘內刪除該應用程序或應用程序崩潰。 http://stackoverflow.com/questions/34903539/spritekit-skview-showsfields-memory-usage – Jonny

+0

如果它有任何安慰,場景套件中的字段也有許多問題。 – Confused