0

私はcocos2dを初めて使用し、タイルマップの学習に追われています。スプライトとスクロールするタイルマップレイヤーのタイルとの衝突を検出したいです。タイルマップレイヤーでは、タイルのプロパティで特定のタイル値1も設定します。問題つまり、タイルがスプライトと衝突し、スプライトが固定位置にあるときに、タイルの衝突または座標を検出するにはどうすればよいですか?

-(void)Collision:(ccTime)delta{

CGPoint playerPosition=player.position;
CGPoint tileCoordPos = [self tileCoordForPosition:playerPosition]; 
bool isTouchOnWater = NO;


int tileGID = [FloorLayer tileGIDAt:tileCoordPos];

if (tileGID != 0)
{
    NSDictionary* properties = [tileMap propertiesForGID:tileGID];
    if (properties)
    {
        CCLOG(@"NSDictionary 'properties' contains:\n%@", properties);
        NSString* isWaterProperty = [properties valueForKey:@"isWater"];
        isTouchOnWater = ([isWaterProperty boolValue] == YES);
    }
}

if (isTouchOnWater)
{
    [[SimpleAudioEngine sharedEngine] playEffect:@"alien-sfx.caf"];
    [FloorLayer removeTileAt:tileCoordPos];
}

}

これは私が使用しているコードです。このコードでは、タイルの座標は同じままです。

4

1 に答える 1

2

マップ全体をスクロールして問題を解決し、1つはグラウンドレイヤー用、もう1つはオブジェクト用の2つのマップを作成してから、衝突を検出します...これは私にとって完璧に機能します

于 2012-07-18T07:08:59.960 に答える