Bir tarafta oyuncu ve diğer tarafta bilgisayar pong yapmak için çalışıyorum çünkü gelecekte oynamak istiyorum farklı oyun alanları ile birçok oyun sahneleri eklemek istiyorum top düğümü, kürek düğümü ayrı ayrı olarak, oyun alanlarına yerleştirmeyi kolaylaştırmak ve her sahnede sıfırdan yaratmalarını sağlamak.
Sorun Şimdi her şeyi bir araya getirdiğim zaman raket çalıyor, top düğümü çalışıyor, ancak bilgisayar kürsüsü ikinci kez gösteriliyor ve sonra kayboluyor. Bilgisayar düğüm kaybolur Neden ComputerNode.mComputerNode nesnel görünmüyor c
@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
GameScene.m
@implementation GameScene
-(void)didMoveToView:(SKView *)view {
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsBody.categoryBitMask = gamefieldCategory;
self.physicsBody.contactTestBitMask = emptyCategory;
self.physicsWorld.contactDelegate = self;
BallNode *ball = [[BallNode alloc] init];
[self addChild:ball];
ball = (BallNode *) [self childNodeWithName:@"ball"];
[ball resetPosition];
PlayerNode *leftPlayer = [[PlayerNode alloc] initOnLeftSide];
[self addChild:leftPlayer];
leftPlayer = (PlayerNode *) [self childNodeWithName:@"leftPlayer"];
[leftPlayer positionOnLeftSide];
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.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);
//there is a very long text, thats why i cut it off
}
}
- (void)update:(CFTimeInterval)currentTime{
[self computer]; // calling computer paddle movement.
}
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
ve hangi: İşte ne var olan bunu değiştirmem gerekiyor mu? Bu kod snippet'inde
Teşekkür ederim, sorun buydu – artG