0

私は22枚の画像を持っています...11枚は(rightwall1、rightwall2、rightwall3など)他の11枚は(leftwall1、leftwall2、leftwall3など)です

y値を前の壁のy値に壁の高さを加えた値に設定して、それぞれを重ねて配置しています(すべての壁は同じ高さです)。

これは問題なく動作します!

ここで、arc4randomを使用してx値を設定しようとしました。これにより、特定の範囲内のすべての場所にジャンプします(左側の壁の場合:(-35〜15)および右側の壁の場合:(330〜405))。 。

右側の壁は完全に機能しますが、左側の壁、一部は機能しますが、ほとんどは画面に表示されません。

1のx値を手動で-45に設定すると、画面に表示され、arc4randomで許可されている値よりも低くなります。

私が考えることができる唯一の問題は、左の壁の減算が間違っているということですか?

これが壁の位置を設定するためのコードです。プロジェクト全体に他のコードはまだありません。

-(void)awakeFromNib {

        rightWall1.center = CGPointMake( ((arc4random()%75)+330), (460-((rightWall1.frame.size.height)/2)) );//460 = bottom of screen
        rightWall2.center = CGPointMake( ((arc4random()%75)+330), ((rightWall1.center.y)-(rightWall2.frame.size.height)) );
        rightWall3.center = CGPointMake( ((arc4random()%75)+330), ((rightWall2.center.y)-(rightWall3.frame.size.height)) );
        rightWall4.center = CGPointMake( ((arc4random()%75)+330), ((rightWall3.center.y)-(rightWall4.frame.size.height)) );
        rightWall5.center = CGPointMake( ((arc4random()%75)+330), ((rightWall4.center.y)-(rightWall5.frame.size.height)) );
        rightWall6.center = CGPointMake( ((arc4random()%75)+330), ((rightWall5.center.y)-(rightWall6.frame.size.height)) );
        rightWall7.center = CGPointMake( ((arc4random()%75)+330), ((rightWall6.center.y)-(rightWall7.frame.size.height)) );
        rightWall8.center = CGPointMake( ((arc4random()%75)+330), ((rightWall7.center.y)-(rightWall8.frame.size.height)) );
        rightWall9.center = CGPointMake( ((arc4random()%75)+330), ((rightWall8.center.y)-(rightWall9.frame.size.height)) );
        rightWall10.center = CGPointMake( ((arc4random()%75)+330), ((rightWall9.center.y)-(rightWall10.frame.size.height)) );
        rightWall11.center = CGPointMake( ((arc4random()%75)+330), ((rightWall10.center.y)-(rightWall11.frame.size.height)) );


        leftWall1.center = CGPointMake( (15-(arc4random()%50)), (460-((leftWall1.frame.size.height)/2)) );
        leftWall2.center = CGPointMake( (15-(arc4random()%50)), ((leftWall1.center.y)-(leftWall2.frame.size.height)) );
        leftWall3.center = CGPointMake( (15-(arc4random()%50)), ((leftWall2.center.y)-(leftWall3.frame.size.height)) );
        leftWall4.center = CGPointMake( (15-(arc4random()%50)), ((leftWall3.center.y)-(leftWall4.frame.size.height)) );
        leftWall5.center = CGPointMake( (15-(arc4random()%50)), ((leftWall4.center.y)-(leftWall5.frame.size.height)) );
        leftWall6.center = CGPointMake( (15-(arc4random()%50)), ((leftWall5.center.y)-(leftWall6.frame.size.height)) );
        leftWall7.center = CGPointMake( (15-(arc4random()%50)), ((leftWall6.center.y)-(leftWall7.frame.size.height)) );
        leftWall8.center = CGPointMake( (15-(arc4random()%50)), ((leftWall7.center.y)-(leftWall8.frame.size.height)) );
        leftWall9.center = CGPointMake( (15-(arc4random()%50)), ((leftWall8.center.y)-(leftWall9.frame.size.height)) );
        leftWall10.center = CGPointMake( (15-(arc4random()%50)), ((leftWall9.center.y)-(leftWall10.frame.size.height)) );
        leftWall11.center = CGPointMake( (15-(arc4random()%50)), ((leftWall10.center.y)-(leftWall11.frame.size.height)) );

}
4

1 に答える 1

0

arc4randomを使用して負の整数値を取得できないことが判明しました(arc4randomはモジュラスを使用するため意味があります...整数... ??ハハ)したがって、フロートを使用します。

言うことはできません:

(-1)*(arc4random() ....

あなたが言う必要があります:

float num1;
num1 = -1;
(num1)*(arc4random() ....

奇妙な...減算についても同じことが言えます...あなたは負の1フロートにarc4randomを掛ける必要があります..

于 2011-05-31T04:49:39.127 に答える