我想用兩個手指移動兩個不同的物體。問題是我無法使用touchBegan方法,因爲我無法識別當前正在操作哪個對象。最好的方法是使用手勢識別器,因爲我可以識別當前正在拖動的視圖,我可以移動兩個或更多不同的對象,並且我總是會引用它們。但我無法使用手勢識別器和SpriteKit.I無法將手勢添加到我的對象,但我可以將手勢添加到主SKView,但它只能用於一個觸摸對象。所以,問題是我如何移動兩個不同的對象與SpriteKit?用兩個手指移動兩個不同的物體SpriteKit
2
A
回答
0
我加入SKViews
到-(void)didMoveToView:
方法解決這個問題,並添加非標準UIGestureRecognizes這個SKViews
0
觸摸...方法肯定可以用於此。舉個例子,爲了平移多個精靈,首先遍歷觸摸。對於每一個,問場景中的所有節點。 (這是節點,您可以獲取對象的引用)
然後遍歷該點上的所有節點。如果他們通過某種可移動性測試(可以說是通過名稱),則使用算術來根據UITouch對象的當前和之前觸摸位置確定其新位置。話雖如此,下面的代碼將移動名稱爲「nameOfMovableObject」的場景中的任何精靈以及該位置的觸摸。
CG_INLINE CGPoint CGPointFromPreviousCoords(CGPoint affectedPoint, CGPoint currentPoint, CGPoint previousPoint) {
return CGPointMake(affectedPoint.x + currentPoint.x - previousPoint.x, affectedPoint.y + currentPoint.y - previousPoint.y);
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];
for (UITouch *touch in touches) {
CGPoint location = [touch locationInNode:self];
CGPoint previousLocation = [touch previousLocationInNode:self];
for (SKNode *node in [self nodesAtPoint:location]) {
if ([node.name isEqualToString:@"nameOfMovableObject"]) {
[node setPosition:CGPointFromPreviousCoords(node.position, location, previousLocation)];
}
}
}
}
相關問題
- 1. 用兩個手指同時移動兩個不同的滾動查看器
- 2. AndEngine同時移動兩個物體
- 3. 用兩個手指手勢滾動
- 4. SpriteKit物理如何移動物體?
- 5. 如何讓一個物體粘在SpriteKit中的另一個移動物體上
- 6. 在SpriteKit + Swift中同時移動兩個槳
- 7. 一個ListView。裏面有兩個物體。兩個不同的任務。如何?
- 8. 滾動只用兩個手指
- 9. 檢測兩個移動物體之間的碰撞
- 10. Angularjs連接兩個物體
- 11. 與兩個物體碰撞
- 12. 兩個物體覆蓋
- 13. Andengine:連接兩個物體
- 14. 同時在一個手勢中移動兩個VIewPagers
- 15. 檢測兩個移動手指的位置
- 16. 我可以移動兩個不同的對象在兩個不同的移動與UIScrollView?Xcode
- 17. 兩個手指點擊UIButton
- 18. spritekit如何在兩個不同的節點上轉換兩個SKAction
- 19. Spritekit(Swift)允許使用兩個不同的Camera節點嗎?
- 20. GDI上兩個不同物體的碰撞
- 21. 如何使用MotionEvent當兩個按鍵之間移動,而不上升手指
- 22. 分頁的UIScrollView用兩個手指平移和縮放
- 23. 什麼是建模兩個同樣事物但具有兩種不同功能的物體的好方法?
- 24. 速度從另一個移動物體跟蹤移動物體
- 25. SpriteKit兩個對象彈跳。
- 26. 用兩個手指旋轉和縮放?
- 27. 用TouchesMoved跟蹤兩個手指
- 28. 兩個不同指針之間的memcpy()
- 29. 指向兩個不同的結構
- 30. 兩個指針指向同一個refernce
哦,我是想類似的東西,但它創建了一個新的問題。如果我非常快地移動對象,那麼[self nodesAtPoint:]將不會強制在我的對象上。另外還有一條線是我的物體不能穿過的線,當我用手指穿過這條線時,它靠近它,但是當我將手指移回線外時,這個物體必須與我的手指一樣移動。但是觸摸方法不包含對我的對象的引用,他們只搜索位置爲 –
的對象@IgorPrusyazhnyuk這不是解決方案中的一個缺陷。這些只是你必須適應的額外條件。你需要找出一種方法來存儲對這些位置偏移量和你的精靈的引用,如果它們給你帶來問題的話。 –
我知道,我試圖通過在觸摸發生時將我的對象添加到數組中來解決此問題,然後使用touchMoved將它們移動到數組中,並使用touchEnded:從數組中移除它們。但是,由於可能有兩個以上的觸動,這似乎是不真實的,我不知道如何將對象與觸碰聯繫起來。正如我所說,手勢將是完美的解決方案,但我不明白爲什麼蘋果沒有添加手勢SpriteKit對象,arhh ..必須有某種方式 –