artG Ierakstīts Aprīlis 12, 2016 Share Ierakstīts Aprīlis 12, 2016 (labots) Sveiki,cenšos uztaisīt mazu spēlīti līdzīgu ping pong kur ir spēlētājs pret kompi. man rādās problēma - rightPlayer jeb datora/pretinieka dēlītis parādāš uz sekundi un pazūd,tas pat neizkustas no vietas, izmantojot NSLog rāda ziņojumu,ka dators tiek izsaukts,kā arī ,ka dati no ComputerNode ir saņemti,kā arī funkcija -(void)computer tiek izsaukta un strādā. Ko es esmu palaidis garā, un kā man to izlabot? GameScene.m : @implementation GameScene -(void)didMoveToView:(SKView *)view { SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"back0.png"]; background.size = self.frame.size; background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); background.zPosition = -10; [self addChild:background]; self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; self.physicsBody.categoryBitMask = gamefieldCategory; self.physicsBody.contactTestBitMask = emptyCategory; self.physicsWorld.contactDelegate = self; ComputerNode *rightPlayer = [[ComputerNode alloc] initOnRightSide]; [self addChild:rightPlayer]; rightPlayer = (ComputerNode *) [self childNodeWithName:@"rightPlayer"]; [rightPlayer positionOnRightSide]; } -(void)computer{ BallNode *ball = (BallNode *) [self childNodeWithName:@"ball"]; ComputerNode *rightPlayer = (ComputerNode *) [self childNodeWithName:@"rightPlayer"]; if (ball) { if (ball.position.x > CGRectGetMidX(self.frame)) { if (rightPlayer.position.y > ball.position.y) { rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, rightPlayer.position.y -1.5f); } if(rightPlayer.position.y < ball.position.y){ rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, rightPlayer.position.y +1.5f); } if (rightPlayer.position.y < self.frame.origin.y) { rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, rightPlayer.position.y); } if (rightPlayer.position.y > self.frame.origin.y + self.frame.size.height) { rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, self.frame.origin.y + self.frame.size.height); } } if(ball.position.x > CGRectGetMidX(self.frame)+ self.frame.size.width/4 ){ if (rightPlayer.position.y > ball.position.y) { rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, rightPlayer.position.y -2.4f); } if(rightPlayer.position.y < ball.position.y){ rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, rightPlayer.position.y +2.4f); } if (rightPlayer.position.y < self.frame.origin.y) { rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, rightPlayer.position.y); } if (rightPlayer.position.y > self.frame.origin.y + self.frame.size.height) { rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, self.frame.origin.y + self.frame.size.height); } } if(ball.position.x < CGRectGetMidX(self.frame)){ if (rightPlayer.position.y > ball.position.y) { rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, rightPlayer.position.y -1.f); } if(rightPlayer.position.y < ball.position.y){ rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, rightPlayer.position.y +1.f); } if (rightPlayer.position.y < self.frame.origin.y) { rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, rightPlayer.position.y); } if (rightPlayer.position.y > self.frame.origin.y + self.frame.size.height) { rightPlayer.position = CGPointMake(self.frame.origin.x - 50 + self.frame.size.width, self.frame.origin.y + self.frame.size.height); } } } } - (void)update:(CFTimeInterval)currentTime { [self computer]; } ComputerPaddleNode.m @implementation ComputerPaddleNode - (id)init { return [self initWithName:@"paddle"]; } - (id)initWithName:(NSString *)name { self = [super init]; if (self) { self = [ComputerPaddleNode spriteNodeWithImageNamed: @"board.png"]; self.userInteractionEnabled = YES; self.name = name; self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.frame.size]; self.physicsBody.dynamic = NO; self.physicsBody.usesPreciseCollisionDetection = YES; self.physicsBody.categoryBitMask = paddleCategory; self.physicsBody.collisionBitMask = emptyCategory; } return self; } - (BOOL)withinParentFrame:(CGPoint)point { CGFloat offset = self.size.height / 2; if (point.y >= offset && point.y <= self.scene.frame.size.height - offset) return YES; else return NO; } - (CGPoint)normalisePoint:(CGPoint)point { CGFloat x = point.x / (self.size.width / 2); if (x > 1.0) x = 1.0; else if (x < -1.0) x = -1.0; CGFloat y = point.y / (self.size.height / 2); if (y > 1.0) y = 1.0; else if (y < -1.0) y = -1.0; return CGPointMake(x,y); } @end ComputerNode.m @implementation ComputerNode -(id)init { return [self initOnRightSide]; } - (id)initOnRightSide { self = [super init]; if (self) { self.name = @"rightPlayer"; ComputerPaddleNode *rightPaddle = [[ComputerPaddleNode alloc] initWithName:@"rightPaddle"]; [self addChild:rightPaddle]; ScoreNode *score = [[ScoreNode alloc] initWithName:@"rightScore"]; [self addChild:score]; } return self; } - (void)positionOnRightSide { SKNode *paddle = [self childNodeWithName:@"rightPaddle"]; paddle.position = CGPointMake(CGRectGetMaxX(self.parent.frame) -50, CGRectGetMidY(self.parent.frame)); } @end Labots Aprīlis 12, 2016 - artG Link to comment Share on other sites More sharing options...
artG Aprīlis 12, 2016 Author Share Aprīlis 12, 2016 ja vēl izstāstītu visu - kas, kur rādās un kurā brīdī, ieliktu visu kodu, tad vēl varētu cerēt, ka kāds iedziļināsies tagad es papildināju tekstu un kodu. bet ieteiktu pašam risināt, sākot ar kaut ko pavisam primitīvu, to palaist un tad jau "ping-pong" Es jau to mēģinu, pirms tam biju uztaisījis tieši to pašu tikai divu spēlētāju ping-pong spēli, gribēju papildināt,lai pašam interesantāk Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!