私は Objective-C と iPhone のプログラミングに非常に慣れていません (ただし、C# のバックグラウンドはもう少しあります)。
私は現在、ミニ プラットフォーム ゲームを作成しようとしています。各プラットフォームを個別にチェックして、プレーヤーが交差するかどうかを確認する代わりに、それを処理する配列と for ステートメントを作成したいと考えています。(私が間違っている場合は修正してください。ただし、C#NSMutableArray
の機能によく似ているようです)List
うまくいくと思うものを入力しましたが、うまくいきませんでした。なぜですか?私@interface
は持っています:
@interface ViewController : UIViewController
{
NSMutableArray *platforms;
UIImageView *platform1;
UIImageView *platform2;
UIImageView *platform3;
UIImageView *platform4;
UIImageView *platform5;
UIImageView *player;
}
@property (nonatomic) NSInteger GameState;
@property IBOutlet UIImageView *player;
@property IBOutlet UIImageView *platform1;
@property IBOutlet UIImageView *platform2;
@property IBOutlet UIImageView *platform3;
@property IBOutlet UIImageView *platform4;
@property IBOutlet UIImageView *platform5;
そして、私の @implementation には次のものがあります。
- (void)viewDidLoad
{
[super viewDidLoad];
[NSTimer scheduledTimerWithTimeInterval:1.0/60 target:self selector:@selector(gameLoop) userInfo:nil repeats:YES];
gravity = CGPointMake(0,0.195);
[platforms addObject:platform1];
[platforms addObject:platform2];
[platforms addObject:platform3];
[platforms addObject:platform4];
[platforms addObject:platform5];
}
- (void)gameLoop
{
playerVelocity = CGPointMake(playerVelocity.x,playerVelocity.y + gravity.y);
player.center = CGPointMake(player.center.x + playerVelocity.x,player.center.y + playerVelocity.y);
for(UIImageView *platform in platforms)
{
if(CGRectIntersectsRect(platform.frame,player.frame))
{
BOOL check = YES; //break point here to check if it reaches this point
}
}
}
また、単に入力すると:
if(CGRectIntersectsRect(platform1.frame,player.frame))
{
BOOL doubleCHECK = YES;
}
できます。