2014-04-24 2 views
1
내가 같은 시간에 약간의 스프라이트를 이동하려고 이봐, 그들은 sprite.So 모두 같은 종류의 난 그냥 게임에서 스프라이트를 추가하는 for 루프를 사용되지만,

나는 모든 이동하려고 할 때 스프라이트 중 하나만 움직입니다.스프라이트는

나는 달리기를하려고합니다. 사용자가 돌을 두드리면 돌이 아래로 움직이고 다른 돌이 꼭대기에 오면 4 개의 돌이 생기므로 하나가 내려 가면 다른 돌들이 맨 위에 올 것입니다. 돌들이 내려 앉을 것이다. 나는 돌이 다른 돌처럼 움직이지 않는 화면 상단에있는 돌을 움직이는 데 어려움을 겪고 있습니다.

다음은 코드의 일부입니다 : 그들은 기본적으로 4 화면에 돌과 돌들이 아래로 이동하면 탭마다 할 예정

self.Stone = [Stone spriteNodeWithColor:[SKColor blackColor] size:CGSizeMake(80, 142)]; 


-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
UITouch *touch = [touches anyObject]; 
CGPoint location = [touch locationInNode:self]; 


self.node =[self nodeAtPoint:location]; 

if ([self.node.name isEqualToString:@"stone"]) { 
    SKAction *hey = [SKAction moveToY:self.Stone.position.y - 142 duration:1]; 
    [self runAction:hey]; 
} 

.

+2

안녕하세요, 오버플로를 환영합니다. 상황에 맞는 조언을 제공 할 수 있도록 코드 예제를 제공하면 도움이됩니다. – mason

+0

나는 아직도 당신이하려는 것을 이해하지 못합니다. 보기 상단에 4 개의 개체 (돌)가 있습니다. 1 개체를 탭하면 모두 4 명이보기 아래로 이동 한 다음 4 개의 새로운 돌이 맨 위에 표시됩니다. – sangony

+0

보기의 맨 위에 있지 않습니다. ok 이렇게 생각하면 화면에 4 x 4 격자가 있습니다. 1 개의 돌은 각 행의 1 위치에 있습니다. 두 번째 열은 돌을 모두 돌리면 돌을 두드리는 곳입니다. 당신이 탭 한 것을 포함하여 마지막 행에서 하나가 제거되고 새로운 줄이 맨 위 줄의 장면에 추가됩니다. 이것은 플레이어가 돌 대신에 배경을 두 드릴 때까지 계속 될 것입니다. – nmwood

답변

0

스프라이트의 이름은 운동에 관해서 식별에 실제 관계가 없습니다. 하나의 스프라이트를 부모로 만들고 다른 모든 스프라이트를 자식으로 첨부 할 수 있습니다. 이렇게하면 부모를 이동할 때 모든 자식을 움직이게하거나 배열에 모든 스프라이트를 덤프하고 루프에서 개별적으로 개별적으로 이동할 수 있습니다.

는 부모/자식 예를 아래

상위/하위의 예입니다을 포함하도록 업데이트되었습니다. 화면을 탭하면 상위 스프라이트가 x 및 y에서 +10으로 이동합니다. 아이는 부모와 함께 움직일 것입니다.

아이의 위치가 부모가 아닌보기에 관하여 알아 두셔야합니다.

#import "MyScene.h" 

@implementation MyScene 
{ 
    SKSpriteNode *mainSprite; 
} 

-(id)initWithSize:(CGSize)size 
{ 
    if (self = [super initWithSize:size]) 
    { 
     self.physicsWorld.contactDelegate = self; 

     mainSprite = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(50, 50)]; 
     mainSprite.position = CGPointMake(100, 100); 
     [self addChild:mainSprite]; 

     SKSpriteNode *child1 = [SKSpriteNode spriteNodeWithColor:[SKColor blueColor] size:CGSizeMake(20, 20)]; 
     child1.position = CGPointMake(40, 40); 
     [mainSprite addChild:child1]; 
    } 
    return self; 
} 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    mainSprite.position = CGPointMake(mainSprite.position.x+10, mainSprite.position.y+10); 
} 

-(void)update:(CFTimeInterval)currentTime 
{ 
    // 
} 

@end 
+0

또한 코드에서 스프라이트를 제거하지 않습니다. 화면에서 벗어나게하고 제거하는 것처럼 보입니다. 그것과 관련이 있습니까? – nmwood

+0

무엇을 할 것인가? 스프라이트가 화면 밖으로 이동하면 제거되지 않습니다. [spriteName removeFromParent] 명령 만 실행하면됩니다. 내가 만든 2 가지 제안을 구현하는 방법을 알고 있습니까? – sangony

+0

예 배열 하나를 시도했는데 아무 것도 움직이지 않았고 부모 하나는 이전과 같은 효과가있었습니다. 노드 수는 화면에서 벗어날 때 내려 가서 제거 된 것으로 가정합니다. – nmwood

관련 문제