1

SKScene でいくつかの三角関数をグラフ化しようとしています。画面の各ポイントに SKShapeNode を使用しているので、左側に到達したら親から削除します。

問題は、何らかの理由で、小さなビューに含まれているかのように画面の一部にしか描画されないことです..画面上の位置が実際の画面と一致していません...たとえば、100に配置した場合実際には別の場所にあります.さらに、グラフが表示される領域のサイズが縮小されます...

下部にいくつかのコードがあります

誰かが私を助けてくれることを願っています!どうもありがとうございました!

他に質問に役立つ可能性のあるものは何でも、投稿を再編集します.

ありがとうございました!

例01 例02

ここにいくつかのコードがあります:

    - (void) createTrigonometricFunction
{

    [self calculateFunction];


    CGMutablePathRef pathToDraw = CGPathCreateMutable();

    CGPathMoveToPoint(pathToDraw, NULL, groundOriginLocation.x,groundOriginLocation.y + groundPointPrevious.y);
    CGPathAddLineToPoint(pathToDraw, NULL, groundOriginLocation.x + 1,groundOriginLocation.y + groundPointCurrent.y);



    SKShapeNode * currentLine = [SKShapeNode node];

    currentLine.position = CGPointMake(groundOriginLocation.x,groundOriginLocation.y);
    currentLine.path = pathToDraw;
    CGPathRelease(pathToDraw);
    [currentLine setStrokeColor:[UIColor whiteColor]];
    currentLine.name = @"terrainLine";

    currentLine.lineWidth = 1;

    [currentScene addChild: currentLine];

    groundPointPrevious = groundPointCurrent;
    //NSLog(@"%f - %f",currentLine.position.x,currentLine.position.y);
}



- (void) calculateFunction
{
    groundDominio += 1;
    groundPointCurrent.x = groundOriginLocation.x;

    groundPointCurrent.y = 2*(sin(degreesToRadian(groundDominio)*2)/5*degreesToRadian(180))*cos(degreesToRadian(150) + degreesToRadian(groundDominio)*5)*sin(degreesToRadian(groundPointCurrent.x));
    groundPointCurrent.y = radianToDegrees(groundPointCurrent.y);

}


//The view controller:: (This is how I load it)


- (void)viewDidLoad
{
    [super viewDidLoad];

    // Configure the view.
    SKView * skView = (SKView *)self.view;
    //skView.showsFPS = YES;
    skView.showsNodeCount = YES;

    // Create and configure the scene.
    SKScene * scene = [MainGame sceneWithSize: skView.bounds.size];
    //scene.scaleMode = SKSceneScaleModeAspectFill;
    NSLog(@"%f  $$    %f",self.view.frame.size.height,self.view.frame.size.width);
    // Present the scene.
    [skView presentScene:scene];
}
4

1 に答える 1