至於現在,我剛剛意識到一個非常重大的設計缺陷在我的應用程序..
所以,問題是:
步槍射擊被擊發,並且基於目前沒有軌跡的土地,我正在玩弄這個想法。然而,子彈地和他們的痕跡留下作爲節點。
-(void)applyShot:(int) posX with:(int) posY {
SKSpriteNode *impact = [[SKSpriteNode alloc] initWithColor:[UIColor grayColor] size:CGSizeMake(2, 2)];
impact.zPosition = 1;
impact.userInteractionEnabled = NO;
impact.position = CGPointMake(posX , posY);
[backgroundImage addChild:impact];
}
而posX/posY是這樣發送的。
//Find difference between centre and background moved distance.
CGPoint positionNow = CGPointMake(backgroundImage.position.x, backgroundImage.position.y);
CGPoint positionPrev = CGPointMake(0.5, 0.5);
float xdiff = positionNow.x - positionPrev.x;
float ydiff = positionNow.y - positionPrev.y;
//Calculate ydrop
int newYDrop = yDrop * 10;
//
CGPoint newPositionOne = CGPointMake(0.5 - xdiff, 0.5 - ydiff);
newPositionOne = CGPointMake((newPositionOne.x + [self myRandom:15 withFieldLower:-15]), (newPositionOne.y - newYDrop));
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(secondsDelay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^(void){
[self applyShot:newPositionOne.x with:newPositionOne.y];
});
這似乎工作正常,直到我開始玩變焦。
現在,這個應用程序基本上是一個1080p的分劃板圖像,並且背景放大以產生(變焦)效果,然後背景被觸摸拖動/倒轉以給出分劃板移動效果。
然後,我設法讓它發生在十字準線的位置,這很好。然後我開始玩弄zoom並注意到了這一點。
所以,如果這不是太容易注意到,在(子彈擊中)是灰色的痕跡,然而,當你放大和backgroundImage他們不依賴於它。所以它們保持不變。
解決方案
現在我需要的是要麼,
- 答:領帶的節點和backgroundImage
- B:擴大蔓延,作爲放大相同的因素。
但我在如何實現這一目標很困惑。
其他問題
當校準下降,下降仍將是一個負擔,沒有變焦的事情作爲現在。所以如果它在6倍變焦時是1個千分點的下降,那麼在10倍變焦或1倍變焦時也是1個千分點的下降(當我意思是放大時,我一直在說變焦)
我怎樣才能達到降落強度無論背景圖像放大多大?
感謝您閱讀,並與我可怕的問題混淆自己,它的讚賞!
我已經試過
拯救孩子一個可變的數組,然後縮放變化後重建他們。
//recreate children
[backgroundImage removeAllChildren];
for (int i=0; i < [shotsHitX count]; i++) {
double posX = ([shotsHitX[i] doubleValue]/5) * rifleZoom;
double posY = ([shotsHitY[i] doubleValue]/5) * rifleZoom;
SKSpriteNode *impact = [[SKSpriteNode alloc] initWithColor:[UIColor grayColor] size:CGSizeMake(2, 2)];
impact.zPosition = 1;
impact.userInteractionEnabled = NO;
impact.position = CGPointMake(posX , posY);
[shotsHitX addObject:[NSNumber numberWithDouble:posX]];
[shotsHitY addObject:[NSNumber numberWithDouble:posY]];
[backgroundImage addChild:impact];
}
//end recreate children
崩潰與內存錯誤。
不太好!
[backgroundImage removeAllChildren];
for (int i=0; i < [shotsHitX count]; i++) {
double posX = ([shotsHitX[i] doubleValue]/5) * rifleZoom;
double posY = ([shotsHitY[i] doubleValue]/5) * rifleZoom;
SKSpriteNode *impact = [[SKSpriteNode alloc] initWithColor:[UIColor grayColor] size:CGSizeMake(2, 2)];
impact.zPosition = 1;
impact.userInteractionEnabled = NO;
impact.position = CGPointMake(posX , posY);
[backgroundImage addChild:impact];
}
//end recreate children
作品,然而,現在它不只是似乎很正確..
我認爲這個問題是當初始變焦進去它的工作原理,那麼當它恢復它的混合投籃放大在與舊鏡頭陣列..在這裏,我們再次去,更多陣列。
//recreate children
[backgroundImage removeAllChildren];
for (int i=0; i < [shotsHitRem count]; i+= 2) {
double posX = ([shotsHitRem[i] doubleValue]/5) * rifleZoom;
double posY = ([shotsHitRem[i+1] doubleValue]/5) * rifleZoom;
SKSpriteNode *impact = [[SKSpriteNode alloc] initWithColor:[UIColor grayColor] size:CGSizeMake(2, 2)];
impact.zPosition = 1;
impact.userInteractionEnabled = NO;
impact.position = CGPointMake(posX , posY);
[backgroundImage addChild:impact];
//add olds m4
if ([shotsHitM4 count] > 0) {
posX = ([shotsHitM4[i] doubleValue]/2) * rifleZoom;
posY = ([shotsHitM4[i+1] doubleValue]/2) * rifleZoom;
impact.position = CGPointMake(posX, posY);
[backgroundImage addChild:impact];
}
}
//end recreate children
現在我崩潰試圖添加已經有一個父
混淆,因爲它要經過好周圍
[backgroundImage setScale:rifleZoom];
編程的一些主要搞亂循環
想象校準修復,只是乘以下降的縮放距離..我想我在這裏的東西.. – user2415313 2015-02-11 00:50:22
@rakeshbs他們被添加爲兒童,如果我沒有錯:O?問題是當它擴展時,它們不會。 ''[backgroundImage addChild:impact];' – user2415313 2015-02-11 01:54:40