0

エラー メッセージを返し続けるコードが少しありますが、何が問題なのかわかりません。私はObjective-c構文にかなり慣れていないので、かなり単純なものかもしれませんが、問題を見つけることができないようです。その方法は

-(void)setPlayerPosition:(CGPoint) position {
    CGPoint tileCoord = [self tileCoordForPosition:position];
    int tileGid = [metaLayer tileGIDAt:tileCoord];
    if (tileGid) {
        NSDictionary *properties = [tileMap propertiesForGID:tileGid];
        if (properties) {
            NSString *collision = [properties valueForKey:@"Collidable"];
            if (collision && [collision compare:@"True"] == NSOrderedSame) {
                return;
            }
            NSString *collectable = [properties valueForKey:@"Collectable"];
            if (collectable && [collectable compare:@"True"] == NSOrderedSame) {
                [metaLayer removeTileAt:tileCoord];
                [foreground removeTileAt:tileCoord];
            }
        }
    }
    player.position = position;
}

2行目に無効な初期化子というエラーが返され、クラスが「tileCoordForPosition:」に応答しない可能性があることも示されています。

4

2 に答える 2

1

http://www.raywenderlich.com/1186/collisions-and-collectables-how-to-make-a-tile-based-game-with-cocos2d-part-2の記事に従っていると思います

したがって、自分で簡単に読んだ後、必要なメソッドが欠落しているか、クラスで適切に宣言していないと推測されます。

次のメソッドを宣言して実装する必要があります

- (CGPoint)tileCoordForPosition:(CGPoint)position

そして、それは自分自身で呼び出す場所と同じクラスにある必要があります

[self tileCoordForPosition:position]

クラスにそのメソッドを実装している場合は、それも正しく宣言していることを確認してください。.mそのようにファイルの先頭に追加してみてください

@interface YourControllerNameHere()

- (CGPoint)tileCoordForPosition:(CGPoint)position;

@end
于 2012-04-24T00:09:07.927 に答える
0

tileCoordForPosition:コンパイラが返す型 (この場合は CGPoint) を認識できるように、ヘッダーで宣言する必要があります。

于 2012-04-24T00:05:23.990 に答える