我正在製作一款遊戲,我在屏幕底部劃出一條線,用於將其展開到空中。它應該像橡皮筋或彈弓。我一起黑了一些有用的東西,但這是一個不好的解決方案,我希望有人可以建議另一種方式。我的方式基本上涉及在touchesMoved方法中通過重複調用draw方法重繪可變路徑。再次,我知道這是一種糟糕的做法,所以對於可怕的代碼很抱歉。在spritekit中製作鬆緊帶式彈弓
-(void)drawLine:(CGPoint)location
{
[_powerLine removeFromParent];
CGPoint pointTL = CGPointMake(19, 131);
CGPoint pointTR = CGPointMake(308, 131);
CGPoint pointBL = CGPointMake(location.x-10, location.y);
CGPoint pointBR = CGPointMake(location.x+10, location.y);
UIBezierPath *lineShape = [UIBezierPath bezierPath];
[lineShape moveToPoint:pointTL];
[lineShape addLineToPoint:pointBL];
[lineShape addLineToPoint:pointBR];
[lineShape addLineToPoint:pointTR];
_powerLine = [SKShapeNode node];
_powerLine.path = lineShape.CGPath;
_powerLine.lineWidth = 2.0;
_powerLine.strokeColor = [SKColor colorWithRed:0.0 green:0 blue:0 alpha:1];
[self addChild:_powerLine];
CGMutablePathRef powerLinePath = CGPathCreateMutable();
CGPathMoveToPoint(powerLinePath, nil, pointTL.x, pointTL.y);
CGPathAddLineToPoint(powerLinePath, nil, pointBL.x, pointBL.y);
CGPathAddLineToPoint(powerLinePath, nil, pointBR.x, pointBR.y);
CGPathAddLineToPoint(powerLinePath, nil, pointTR.x, pointTR.y);
_powerLine.physicsBody = [SKPhysicsBody bodyWithEdgeChainFromPath:powerLinePath];
_powerLine.physicsBody.categoryBitMask = WFPhysicsCategoryPowerline;
_lastBR = pointBR;
_lastBL = pointBL;
}
我希望有一個更好的方式比當人拉線下拉到空氣中的拍攝對象了不斷重繪做到這一點其他的。我看着春天的關節,但無法說服他們工作。我與彈簧接頭有關的另一個問題是如何讓圖像伸展以匹配線條應該在的位置。這種方法解決了試圖通過簡單地消除圖像來拉伸圖像。這將是很好的使用彈簧,以便我可以避免必須手動編碼這個物理。
任何人都有想法如何做到這一點?
啊,這真的很好,可能會讓我朝着正確的方向前進。我沒有具體說明該物體需要着陸在導線上,並且可以再次啓動。想想你穿過場景底部的一根電線,用來在空中發射東西。當他們回來時,他們落在電線上,你可以再次啓動它們。但我認爲如果我使用兩個錨點並設置碰撞位掩碼,這種方法可能會起作用。感謝您爲我寫出了一整塊代碼! – user3453934